diff --git a/experiment/meteo_france_data/scm_models_data/visualization/hypercube_visualization/abstract_hypercube_visualizer.py b/experiment/meteo_france_data/scm_models_data/visualization/hypercube_visualization/abstract_hypercube_visualizer.py
index 4d65c31b328c5b2015eaf903b6d491a296807b4c..b9be5632c3b2391dfad98b8c889f5f762922db28 100644
--- a/experiment/meteo_france_data/scm_models_data/visualization/hypercube_visualization/abstract_hypercube_visualizer.py
+++ b/experiment/meteo_france_data/scm_models_data/visualization/hypercube_visualization/abstract_hypercube_visualizer.py
@@ -21,21 +21,32 @@ class AbstractHypercubeVisualizer(object):
                  trend_test_class,
                  nb_data_reduced_for_speed=False,
                  save_to_file=False,
+                 first_starting_year=None,
                  last_starting_year=None,
+                 exact_starting_year=None,
                  verbose=True):
         self.verbose = verbose
-        self.last_starting_year = last_starting_year
+        self.save_to_file = save_to_file
+        self.trend_test_class = trend_test_class
+        self.tuple_to_study_visualizer = tuple_to_study_visualizer  # type: Dict[Tuple, StudyVisualizer]
+
+        if exact_starting_year is not None:
+            assert first_starting_year is None
+            assert last_starting_year is None
+            self.first_starting_year, self.first_starting_year = exact_starting_year, exact_starting_year
+        else:
+            default_first_starting_year, *_, default_last_starting_year = self.all_potential_starting_years
+            self.first_starting_year = first_starting_year if first_starting_year is not None else default_first_starting_year
+            self.last_starting_year = last_starting_year if last_starting_year is not None else default_last_starting_year
         if isinstance(nb_data_reduced_for_speed, bool):
             self.nb_data_for_fast_mode = 7 if nb_data_reduced_for_speed else None
         else:
             assert isinstance(nb_data_reduced_for_speed, int)
             self.nb_data_for_fast_mode = nb_data_reduced_for_speed
-        self.save_to_file = save_to_file
-        self.trend_test_class = trend_test_class
-        self.tuple_to_study_visualizer = tuple_to_study_visualizer  # type: Dict[Tuple, StudyVisualizer]
+
         if self.verbose:
             print('Hypercube with parameters:')
-            print('Starting year:', self.last_starting_year)
+            print('Starting years:', self.starting_years)
             print('Trend test class:', get_display_name_from_object_type(self.trend_test_class))
 
     # Main attributes defining the hypercube
@@ -44,11 +55,13 @@ class AbstractHypercubeVisualizer(object):
     def trend_test_name(self):
         return get_display_name_from_object_type(self.trend_test_class)
 
+    @property
+    def all_potential_starting_years(self):
+        return self.study_visualizer.starting_years
+
     @cached_property
     def starting_years(self):
-        starting_years = self.study_visualizer.starting_years
-        if self.last_starting_year is not None:
-            starting_years = [year for year in starting_years if year <= self.last_starting_year]
+        starting_years = [year for year in self.all_potential_starting_years if self.first_starting_year <= year <= self.last_starting_year]
         if self.nb_data_for_fast_mode is not None:
             starting_years = starting_years[:self.nb_data_for_fast_mode]
         return starting_years
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 31efe3ca0ed8a0a900cd5b3c715c361e657042bc..000032616d6fe865fcd82ceb823f7ca7215fba0a 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
@@ -132,14 +132,17 @@ class AltitudeHypercubeVisualizer(AbstractHypercubeVisualizer):
         ylabel_to_series = self.ylabel_to_series(reduction_function, isin_parameters)
         assert len(axes_remaining) == len(ylabel_to_series), '{}, {}'.format(len(axes_remaining), len(ylabel_to_series))
         for ax_idx, (ax, (ylabel, serie)) in enumerate(zip(axes_remaining, ylabel_to_series.items())):
+            assert isinstance(serie, pd.Series)
             xlabel_values = list(serie.index)
             values = list(serie.values)
-            argmax_idx = np.argmax(values)
-            best_year = xlabel_values[argmax_idx]
-            plot_title += '{}'.format(best_year)
+
+            if plot_title is not None:
+                argmax_idx = np.argmax(values)
+                best_year = xlabel_values[argmax_idx]
+                plot_title += '{}'.format(best_year)
+                ax.set_title(plot_title)
             ax.plot(xlabel_values, values)
             ax.set_ylabel(ylabel)
-            ax.set_title(plot_title)
 
         specific_title = 'Evolution of {} trends (significative or not) wrt to the {} with {}'.format(subtitle, xlabel,
                                                                                                       self.trend_test_name)
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 13877ca4363139e3adfa54d962dbddf942187053..3589c2d1b81211cb5ea87f1870305ca133ef6f3b 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
@@ -5,6 +5,8 @@ from experiment.meteo_france_data.scm_models_data.visualization.hypercube_visual
     AltitudeHypercubeVisualizer
 from experiment.meteo_france_data.scm_models_data.visualization.hypercube_visualization.altitude_year_hypercube_visualizer import \
     Altitude_Hypercube_Year_Visualizer, AltitudeHypercubeVisualizerBis, AltitudeHypercubeVisualizerWithoutTrendType
+from experiment.meteo_france_data.scm_models_data.visualization.hypercube_visualization.quantity_altitude_visualizer import \
+    QuantityAltitudeHypercubeVisualizer
 
 
 class AltitudeHypercubeVisualizerExtended(AltitudeHypercubeVisualizer):
@@ -127,3 +129,12 @@ class AltitudeHypercubeVisualizerWithoutTrendExtended(AltitudeHypercubeVisualize
 
 class AltitudeYearHypercubeVisualizerExtended(AltitudeHypercubeVisualizerExtended, Altitude_Hypercube_Year_Visualizer):
     pass
+
+
+# Quantity hypercube
+
+class QuantityHypercubeWithoutTrend(AltitudeHypercubeVisualizerWithoutTrendType, QuantityAltitudeHypercubeVisualizer):
+    pass
+
+class QuantityHypercubeWithoutTrendExtended(AltitudeHypercubeVisualizerExtended, QuantityHypercubeWithoutTrend):
+    pass
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 8908e6161b90bf037180172b9425e256164046a5..8fabfd1c31d4909b605c5090b5cf53796cb49e49 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
@@ -6,7 +6,8 @@ from experiment.meteo_france_data.scm_models_data.visualization.hypercube_visual
     AltitudeHypercubeVisualizer
 from experiment.meteo_france_data.scm_models_data.visualization.hypercube_visualization.altitude_hypercube_visualizer_extended import \
     AltitudeYearHypercubeVisualizerExtended, AltitudeHypercubeVisualizerExtended, \
-    AltitudeHypercubeVisualizerBisExtended, AltitudeHypercubeVisualizerWithoutTrendExtended
+    AltitudeHypercubeVisualizerBisExtended, AltitudeHypercubeVisualizerWithoutTrendExtended, \
+    QuantityHypercubeWithoutTrend, QuantityHypercubeWithoutTrendExtended
 from experiment.meteo_france_data.scm_models_data.visualization.hypercube_visualization.altitude_year_hypercube_visualizer import \
     Altitude_Hypercube_Year_Visualizer, AltitudeHypercubeVisualizerWithoutTrendType
 from experiment.meteo_france_data.scm_models_data.visualization.hypercube_visualization.quantity_altitude_visualizer import \
@@ -45,18 +46,20 @@ def full_quantity_altitude_hypercube():
     add_detailed_plots = True
     altitudes = ALL_ALTITUDES[3:-6]
     study_classes = SCM_STUDIES
-    for trend_test_class in [GevLocationChangePointTest, GevScaleChangePointTest, GevShapeChangePointTest][:]:
+    for trend_test_class in [GevLocationChangePointTest, GevScaleChangePointTest, GevShapeChangePointTest][:1]:
         visualizers = [StudyVisualizer(study, temporal_non_stationarity=True, verbose=False, multiprocessing=True)
                        for study in study_iterator_global(study_classes=study_classes, only_first_one=only_first_one,
                                                           altitudes=altitudes)]
         study_classes_str = [get_display_name_from_object_type(c) for c in study_classes]
         quantity_altitude_tuples = list(product(study_classes_str, altitudes))
         quantity_altitude_to_visualizer = OrderedDict(zip(quantity_altitude_tuples, visualizers))
-        visualizer = QuantityAltitudeHypercubeVisualizer(quantity_altitude_to_visualizer, save_to_file=save_to_file,
-                                                         trend_test_class=trend_test_class, fast=fast)
-        visualizer.visualize_year_trend_test(add_detailed_plots=add_detailed_plots)
-        visualizer.visualize_massif_trend_test(add_detailed_plots=add_detailed_plots)
-        visualizer.visualize_altitude_trend_test(add_detailed_plots=add_detailed_plots)
+        visualizer = QuantityHypercubeWithoutTrendExtended(quantity_altitude_to_visualizer,
+                                                           save_to_file=save_to_file,
+                                                           trend_test_class=trend_test_class,
+                                                           nb_data_reduced_for_speed=False,
+                                                           last_starting_year=2007,
+                                                           )
+        visualizer.vsualize_year_trend_by_regions_and_altitudes()
 
 
 def fast_altitude_hypercube():
@@ -112,19 +115,18 @@ def fast_altitude_without_trend_type_hypercube_extended():
                     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 = AltitudeHypercubeVisualizerWithoutTrendExtended(altitude_to_visualizer,
+                visualizer = QuantityHypercubeWithoutTrendExtended(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.vsualize_year_trend_by_regions_and_altitudes()
 
-
-                # visualizer = AltitudeHypercubeVisualizerWithoutTrendType(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 = QuantityHypercubeWithoutTrend(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_year_trend_test()
 
 
@@ -134,7 +136,7 @@ def fast_altitude_year_hypercube_extended():
     nb_data_reduced_for_speed = True
     altitudes = [ALL_ALTITUDES[3], ALL_ALTITUDES[-7]]
     for study_class in SCM_STUDIES[:2]:
-        for last_starting_year in [None, 1989, 1999][:2]:
+        for exact_starting_year in [1982]:
             for trend_test_class in [GevLocationChangePointTest, GevScaleChangePointTest, GevShapeChangePointTest][:2]:
                 visualizers = [
                     StudyVisualizer(study, temporal_non_stationarity=True, verbose=False, multiprocessing=True)
@@ -144,7 +146,7 @@ def fast_altitude_year_hypercube_extended():
                 visualizer = AltitudeHypercubeVisualizerExtended(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)
+                                                                 last_starting_year=exact_starting_year)
                 # visualizer.visualize_year_trend_test()
                 # visualizer.visualize_altitude_trend_test()
                 # visualizer.visualize_massif_trend_test_by_altitudes()
@@ -225,13 +227,13 @@ def full_altitude_year_hypercube__without_trend_extended():
                         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 = AltitudeHypercubeVisualizerWithoutTrendExtended(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.vsualize_year_trend_by_regions_and_altitudes()
+                    # visualizer = QuantityHypercubeWithoutTrendExtended(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.vsualize_year_trend_by_regions_and_altitudes()
 
 
 def fast_quantity_altitude_hypercube():
@@ -247,19 +249,21 @@ def fast_quantity_altitude_hypercube():
         study_classes_str = [get_display_name_from_object_type(c) for c in study_classes]
         quantity_altitude_tuples = list(product(study_classes_str, altitudes))
         quantity_altitude_to_visualizer = OrderedDict(zip(quantity_altitude_tuples, visualizers))
-        visualizer = QuantityAltitudeHypercubeVisualizer(quantity_altitude_to_visualizer, save_to_file=save_to_file,
-                                                         trend_test_class=trend_test_class, fast=fast)
+        visualizer = QuantityHypercubeWithoutTrend(quantity_altitude_to_visualizer, save_to_file=save_to_file,
+                                                         trend_test_class=trend_test_class, nb_data_reduced_for_speed=True)
         visualizer.visualize_year_trend_test()
-        visualizer.visualize_massif_trend_test()
-        visualizer.visualize_altitude_trend_test()
+        # visualizer.visualize_massif_trend_test()
+        # visualizer.visualize_altitude_trend_test()
 
 
 def main_run():
     # fast_altitude_hypercube()
     # fast_altitude_year_hypercube()
 
+    # fast_quantity_altitude_hypercube()
     # fast_altitude_without_trend_type_hypercube_extended()
-    full_altitude_year_hypercube__without_trend_extended()
+    # full_altitude_year_hypercube__without_trend_extended()
+    full_quantity_altitude_hypercube()
 
     # fast_altitude_year_hypercube_extended()
     # full_altitude_year_hypercube_extended()