diff --git a/experiment/meteo_france_data/scm_models_data/abstract_study.py b/experiment/meteo_france_data/scm_models_data/abstract_study.py
index 7eebbec1a0958f6fcbf4c9d9633f01a88ce826dc..e856eaf51a16e4af88ac96c4773d637a42222e65 100644
--- a/experiment/meteo_france_data/scm_models_data/abstract_study.py
+++ b/experiment/meteo_france_data/scm_models_data/abstract_study.py
@@ -275,7 +275,6 @@ class AbstractStudy(object):
                 # ax.scatter(x, y)
                 # ax.text(x, y, massif_name)
         # Display the center of the massif
-        print(massif_names)
         masssif_coordinate_for_display = cls.massifs_coordinates_for_display(massif_names)
 
         ax.scatter(masssif_coordinate_for_display.x_coordinates,
diff --git a/experiment/meteo_france_data/scm_models_data/visualization/hypercube_visualization/altitude_hypercube_visualizer.py b/experiment/meteo_france_data/scm_models_data/visualization/hypercube_visualization/altitude_hypercube_visualizer.py
index 37c9706836ad3f78162e7160bf5a3a7ed826f036..c4fbbaaf44da1cd573fc61a26a1568663dc95830 100644
--- a/experiment/meteo_france_data/scm_models_data/visualization/hypercube_visualization/altitude_hypercube_visualizer.py
+++ b/experiment/meteo_france_data/scm_models_data/visualization/hypercube_visualization/altitude_hypercube_visualizer.py
@@ -115,7 +115,8 @@ class AltitudeHypercubeVisualizer(AbstractHypercubeVisualizer):
             ax.set_xlabel(xlabel)
             ax.grid()
             ax.legend()
-            ax.set_title(plot_title)
+            if plot_title is not None:
+                ax.set_title(plot_title)
 
         specific_title = 'Evolution of {} trends (significative or not) wrt to the {} with {}'.format(subtitle, xlabel,
                                                                                                       self.trend_test_name)
@@ -146,7 +147,8 @@ class AltitudeHypercubeVisualizer(AbstractHypercubeVisualizer):
             axes = [axes]
         return axes
 
-    def visualize_trend_test_repartition(self, reduction_function, axes=None, subtitle='', isin_parameters=None):
+    def visualize_trend_test_repartition(self, reduction_function, axes=None, subtitle='', isin_parameters=None,
+                                         show_or_save_to_file=True, plot_title=None):
         if axes is None:
             axes = self.load_axes_for_trend_test_repartition(self.nb_rows)
         else:
@@ -162,12 +164,17 @@ class AltitudeHypercubeVisualizer(AbstractHypercubeVisualizer):
                 epislon = 0.001 * vmax
                 vmin -= epislon
                 vmax += epislon
+
+            if i == 0:
+                vmin, vmax = 0, 100
             for ax, display_trend_type in zip(axes_row, self.display_trend_types):
                 serie = trend_type_to_serie[display_trend_type]
                 massif_to_value = dict(serie)
                 cmap = self.trend_test_class.get_cmap_from_trend_type(display_trend_type)
-                self.study.visualize_study(ax, massif_to_value, show=False, cmap=cmap, label=None, vmax=vmax, vmin=vmin)
-                ax.set_title(display_trend_type)
+                self.study.visualize_study(ax, massif_to_value, show=False, cmap=cmap, label=display_trend_type,
+                                           vmax=vmax, vmin=vmin)
+                if plot_title is not None:
+                    ax.set_title(plot_title)
             row_title = self.get_title_plot(xlabel='massifs', ax_idx=i)
             StudyVisualizer.clean_axes_write_title_on_the_left(axes_row, row_title, left_border=None)
 
@@ -175,7 +182,10 @@ class AltitudeHypercubeVisualizer(AbstractHypercubeVisualizer):
         title = 'Repartition of {} trends (significative or not) with {}'.format(subtitle, self.trend_test_name)
         title += '\n ' + self.get_title_plot('massifs')
         plt.suptitle(title)
-        self.show_or_save_to_file(specific_title=title)
+
+        if show_or_save_to_file:
+            self.show_or_save_to_file(specific_title=title)
+        return title
 
     def load_axes_for_trend_test_repartition(self, nb_rows):
         nb_trend_type = len(self.display_trend_type_to_style)
@@ -216,16 +226,22 @@ class AltitudeHypercubeVisualizer(AbstractHypercubeVisualizer):
                                                                                 level=self.altitude_index_level,
                                                                                 add_detailed_plot=add_detailed_plots).items():
             last_result = self.visualize_trend_test_evolution(reduction_function=reduction_function,
-                                                           xlabel=ALTITUDES_XLABEL,
-                                                           xlabel_values=self.altitudes, axes=axes, marker=marker,
-                                                           subtitle=subtitle, isin_parameters=isin_parameters,
-                                                           show_or_save_to_file=show_or_save_to_file,
-                                                           plot_title=plot_title)
+                                                              xlabel=ALTITUDES_XLABEL,
+                                                              xlabel_values=self.altitudes, axes=axes, marker=marker,
+                                                              subtitle=subtitle, isin_parameters=isin_parameters,
+                                                              show_or_save_to_file=show_or_save_to_file,
+                                                              plot_title=plot_title)
         return last_result
 
-    def visualize_massif_trend_test(self, axes=None, add_detailed_plots=False, isin_parameters=None):
+    def visualize_massif_trend_test(self, axes=None, add_detailed_plots=False, plot_title=None,
+                                    isin_parameters=None,
+                                    show_or_save_to_file=True):
         for subtitle, reduction_function in self.subtitle_to_reduction_function(self.index_reduction,
                                                                                 level=self.massif_index_level,
                                                                                 add_detailed_plot=add_detailed_plots).items():
-            self.visualize_trend_test_repartition(reduction_function, axes, subtitle=subtitle,
-                                                  isin_parameters=isin_parameters)
+            last_result = self.visualize_trend_test_repartition(reduction_function, axes, subtitle=subtitle,
+                                                                isin_parameters=isin_parameters,
+                                                                plot_title=plot_title,
+                                                                show_or_save_to_file=show_or_save_to_file)
+
+        return last_result
diff --git a/experiment/meteo_france_data/scm_models_data/visualization/hypercube_visualization/altitude_hypercube_visualizer_extended.py b/experiment/meteo_france_data/scm_models_data/visualization/hypercube_visualization/altitude_hypercube_visualizer_extended.py
index 024d060bc8e56b4c5b0fa8c71d612b20398806b7..5e8d220207c30c20b2379d5571125c2b5a4cf572 100644
--- a/experiment/meteo_france_data/scm_models_data/visualization/hypercube_visualization/altitude_hypercube_visualizer_extended.py
+++ b/experiment/meteo_france_data/scm_models_data/visualization/hypercube_visualization/altitude_hypercube_visualizer_extended.py
@@ -23,31 +23,61 @@ class AltitudeHypercubeVisualizerExtended(AltitudeHypercubeVisualizer):
                 df_bool = res.transpose() if transpose else res
         return df_bool
 
+    def _visualize_meta(self, visualization_function, loading_function, name_to_isin_parameters=None):
+        assert name_to_isin_parameters is not None, 'this method should not be called directly'
+        multiplication_factor = len(name_to_isin_parameters)
+        all_axes = loading_function(self.nb_rows * multiplication_factor)
+        specific_title = ''
+        for j, (name, isin_parameters) in enumerate(name_to_isin_parameters.items()):
+            axes = all_axes[j::multiplication_factor]
+            specific_title = visualization_function(axes, plot_title=name,
+                                                    isin_parameters=isin_parameters,
+                                                    show_or_save_to_file=False)
+        self.show_or_save_to_file(specific_title=specific_title)
+
+    # Altitude trends
+
+    def _visualize_altitude_trend_test(self, name_to_isin_parameters=None):
+        return self._visualize_meta(visualization_function=self.visualize_altitude_trend_test,
+                                    loading_function=self.load_trend_test_evolution_axes,
+                                    name_to_isin_parameters=name_to_isin_parameters)
+
+    def visualize_altitute_trend_test_by_regions(self):
+        return self._visualize_altitude_trend_test(name_to_isin_parameters=self.region_name_to_isin_parameters)
+
     @property
     def region_name_to_isin_parameters(self):
         return {region_name: [(False, values, self.massif_index_level)]
                 for region_name, values in AbstractExtendedStudy.region_name_to_massif_names.items()}
 
+    # Massif trends
+
+    def _visualize_massif_trend_test(self, name_to_isin_parameters=None):
+        return self._visualize_meta(visualization_function=self.visualize_massif_trend_test,
+                                    loading_function=self.load_axes_for_trend_test_repartition,
+                                    name_to_isin_parameters=name_to_isin_parameters)
+
+    def visualize_massif_trend_test_by_altitudes(self):
+        return self._visualize_massif_trend_test(name_to_isin_parameters=self.altitude_band_name_to_isin_parameters)
+
     @property
-    def nb_regions(self):
-        return len(self.region_name_to_isin_parameters)
+    def altitude_band_name_to_values(self):
+        altitude_band = 1000
+        group_idxs = [a // altitude_band for a in self.altitudes]
+        altitude_band_name_to_values = {'All altitudes': self.altitudes}
+        for group_idx in set(group_idxs):
+            values = [a for a, i in zip(self.altitudes, group_idxs) if i == group_idx]
+            altitude_band_name = '{}m <= altitude <={}m'.format(group_idx * altitude_band,
+                                                                (group_idx + 1) * altitude_band)
+            altitude_band_name_to_values[altitude_band_name] = values
+        return altitude_band_name_to_values
 
+    @property
     def altitude_band_name_to_isin_parameters(self):
-        return self.altitudes
+        return {altitude_band_name: [(False, values, self.altitude_index_level)]
+                for altitude_band_name, values in self.altitude_band_name_to_values.items()}
 
-    def visualize_altitute_trend_test_by_regions(self):
-        return self._visualize_altitude_trend_test(name_to_isin_parameters=self.region_name_to_isin_parameters)
 
-    def _visualize_altitude_trend_test(self, name_to_isin_parameters=None):
-        assert name_to_isin_parameters is not None, 'this method should not be called directly'
-        multiplication_factor = len(name_to_isin_parameters)
-        all_axes = self.load_trend_test_evolution_axes(self.nb_rows * multiplication_factor)
-        specific_title = ''
-        for j, (name, isin_parameters) in enumerate(name_to_isin_parameters.items()):
-            axes = all_axes[j::multiplication_factor]
-            specific_title = self.visualize_altitude_trend_test(axes, plot_title=name, isin_parameters=isin_parameters, show_or_save_to_file=False)
-        print(specific_title)
-        self.show_or_save_to_file(specific_title=specific_title)
 
 
 class AltitudeHypercubeVisualizerBisExtended(AltitudeHypercubeVisualizerExtended, AltitudeHypercubeVisualizerBis):
diff --git a/experiment/meteo_france_data/scm_models_data/visualization/hypercube_visualization/main_hypercube_visualization.py b/experiment/meteo_france_data/scm_models_data/visualization/hypercube_visualization/main_hypercube_visualization.py
index d3df13adf9644592ec75dd7bda86515e2e358965..bc3ba3da48d5750fa1c709ded605e0dfb78bb9f4 100644
--- a/experiment/meteo_france_data/scm_models_data/visualization/hypercube_visualization/main_hypercube_visualization.py
+++ b/experiment/meteo_france_data/scm_models_data/visualization/hypercube_visualization/main_hypercube_visualization.py
@@ -116,8 +116,10 @@ def fast_altitude_year_hypercube_extended():
                                                                  nb_data_reduced_for_speed=nb_data_reduced_for_speed,
                                                                  last_starting_year=last_starting_year)
                 # visualizer.visualize_year_trend_test()
-                visualizer.visualize_altitude_trend_test()
-                visualizer.visualize_altitute_trend_test_by_regions()
+                # visualizer.visualize_altitude_trend_test()
+                visualizer.visualize_massif_trend_test_by_altitudes()
+                # visualizer.visualize_massif_trend_test_by_altitudes()
+                # visualizer.visualize_altitute_trend_test_by_regions()
                 # visualizer.visualize_massif_trend_test()
 
 
@@ -154,22 +156,24 @@ def full_altitude_year_hypercube_extended():
     for study_class in SCM_STUDIES[:1]:
         for trend_test_class in [GevLocationChangePointTest, GevScaleChangePointTest,
                                  GevShapeChangePointTest][:1]:
-            years = [1967, 1977, 1987, 1997, 2007, None][-2:-1][::-1]
+            years = [1967, 1977, 1987, 1997, 2007, None][-2:][::-1]
             for last_starting_year in years:
-                visualizers = [
-                    StudyVisualizer(study, temporal_non_stationarity=True, verbose=False, multiprocessing=True)
-                    for study in study_iterator(study_class=study_class, only_first_one=only_first_one,
-                                                altitudes=altitudes)]
-                altitude_to_visualizer = OrderedDict(zip(altitudes, visualizers))
-                visualizer = AltitudeHypercubeVisualizerBisExtended(altitude_to_visualizer,
-                                                                    save_to_file=save_to_file,
-                                                                    trend_test_class=trend_test_class,
-                                                                    nb_data_reduced_for_speed=nb_data_reduced_for_speed,
-                                                                    last_starting_year=last_starting_year)
-                visualizer.visualize_altitute_trend_test_by_regions()
-                # visualizer.visualize_year_trend_test()
-                # visualizer.visualize_massif_trend_test()
-                visualizer.visualize_altitude_trend_test()
+                for days in [1, 3]:
+                    visualizers = [
+                        StudyVisualizer(study, temporal_non_stationarity=True, verbose=False, multiprocessing=True)
+                        for study in study_iterator(study_class=study_class, only_first_one=only_first_one,
+                                                    altitudes=altitudes, nb_consecutive_days=days)]
+                    altitude_to_visualizer = OrderedDict(zip(altitudes, visualizers))
+                    visualizer = AltitudeHypercubeVisualizerBisExtended(altitude_to_visualizer,
+                                                                        save_to_file=save_to_file,
+                                                                        trend_test_class=trend_test_class,
+                                                                        nb_data_reduced_for_speed=nb_data_reduced_for_speed,
+                                                                        last_starting_year=last_starting_year,
+                                                                        )
+                    visualizer.visualize_altitute_trend_test_by_regions()
+                    # visualizer.visualize_year_trend_test()
+                    # visualizer.visualize_massif_trend_test()
+                    # visualizer.visualize_altitude_trend_test()
 
 
 def fast_quantity_altitude_hypercube():
@@ -196,9 +200,9 @@ def main_run():
     # fast_altitude_hypercube()
     # fast_altitude_year_hypercube()
 
-    # fast_altitude_year_hypercube_extended()
+    fast_altitude_year_hypercube_extended()
     # full_altitude_year_hypercube_extended()
-    full_altitude_year_hypercube()
+    # full_altitude_year_hypercube()
     # fast_quantity_altitude_hypercube()
     # full_quantity_altitude_hypercube()
 
diff --git a/experiment/meteo_france_data/scm_models_data/visualization/study_visualization/study_visualizer.py b/experiment/meteo_france_data/scm_models_data/visualization/study_visualization/study_visualizer.py
index cc03044e4f0eafa82e61ab235e512d0ce116d8c2..390a389c70f93ebebe2656764f8e2413e9078171 100644
--- a/experiment/meteo_france_data/scm_models_data/visualization/study_visualization/study_visualizer.py
+++ b/experiment/meteo_france_data/scm_models_data/visualization/study_visualization/study_visualizer.py
@@ -405,7 +405,7 @@ class StudyVisualizer(VisualizationParameters):
             self.starting_years_for_change_point_test = starting_years_for_change_point_test
             self.nb_massif_for_change_point_test = nb_massif_for_change_point_test
         else:
-             # Check that the argument are the same
+            # Check that the argument are the same
             assert self.trend_test_class_for_change_point_test == trend_test_class_for_change_point_test
             assert self.starting_years == starting_years_for_change_point_test
             assert self.nb_massif_for_change_point_test == nb_massif_for_change_point_test
@@ -421,11 +421,13 @@ class StudyVisualizer(VisualizationParameters):
             years, smooth_maxima = self.smooth_maxima_x_y(massif_id)
             gev_change_point_test_results = compute_gev_change_point_test_results(self.multiprocessing, smooth_maxima,
                                                                                   self.starting_years_for_change_point_test,
-                                                                                  self.trend_test_class_for_change_point_test, years)
+                                                                                  self.trend_test_class_for_change_point_test,
+                                                                                  years)
             massif_name_to_gev_change_point_test_results[massif_name] = gev_change_point_test_results
         return massif_name_to_gev_change_point_test_results
 
-    def df_trend_spatio_temporal(self, trend_test_class_for_change_point_test, starting_years_for_change_point_test,
+    def df_trend_spatio_temporal(self, trend_test_class_for_change_point_test,
+                                 starting_years_for_change_point_test,
                                  nb_massif_for_change_point_test=None):
         """
         Index are the massif
@@ -435,12 +437,11 @@ class StudyVisualizer(VisualizationParameters):
         :param starting_year_to_weight:
         :return:
         """
-        # Set the attributes
-
         massif_name_to_trend_res = {}
-        massif_name_to_gev_change_point_test_results = self.massif_name_to_gev_change_point_test_results(trend_test_class_for_change_point_test,
-                                                                                                         starting_years_for_change_point_test,
-                                                                                                         nb_massif_for_change_point_test)
+        massif_name_to_gev_change_point_test_results = self.massif_name_to_gev_change_point_test_results(
+            trend_test_class_for_change_point_test,
+            starting_years_for_change_point_test,
+            nb_massif_for_change_point_test)
         for massif_name, gev_change_point_test_results in massif_name_to_gev_change_point_test_results.items():
             trend_test_res, best_idxs = gev_change_point_test_results
             trend_test_res = [(a, b) if i in best_idxs else (np.nan, np.nan)
diff --git a/test/test_experiment/test_hypercube.py b/test/test_experiment/test_hypercube.py
index 845102aeef2a9fb58a855ea02baf0f171339ec6e..117fe8a3db2cacfa7d859c62295cd66e04c9e229 100644
--- a/test/test_experiment/test_hypercube.py
+++ b/test/test_experiment/test_hypercube.py
@@ -17,7 +17,7 @@ from extreme_estimator.extreme_models.utils import set_seed_for_test
 
 
 class TestHypercube(unittest.TestCase):
-    DISPLAY = True
+    DISPLAY = False
 
     def setUp(self) -> None:
         set_seed_for_test(42)