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 0f7454c1acfeffb3f3df814a6fc08f2a16b9a205..73e13c6a6f210db23419d5d0c6101d116f07bebc 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
@@ -25,7 +25,6 @@ class AbstractHypercubeVisualizer(object):
                  last_starting_year=None):
         self.last_starting_year = last_starting_year
         self.nb_data_for_fast_mode = 7 if nb_data_reduced_for_speed else None
-        self.nb_top_likelihood_values = nb_top_likelihood_values
         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]
@@ -55,8 +54,7 @@ class AbstractHypercubeVisualizer(object):
     @cached_property
     def df_trends_spatio_temporal(self):
         return [study_visualizer.df_trend_spatio_temporal(self.trend_test_class, self.starting_years,
-                                                          self.nb_data_for_fast_mode,
-                                                          self.nb_top_likelihood_values)
+                                                          self.nb_data_for_fast_mode)
                 for study_visualizer in self.tuple_to_study_visualizer.values()]
 
     @cached_property
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 4021a1015aea172caa70373075f0b9e5ecef60eb..c577d90eae3cb186689f855010e976d29e2994fc 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
@@ -2,15 +2,16 @@ import time
 from collections import OrderedDict
 from itertools import product
 
-from experiment.meteo_france_data.scm_models_data.visualization import \
+from experiment.meteo_france_data.scm_models_data.visualization.hypercube_visualization.altitude_hypercube_visualizer import \
     AltitudeHypercubeVisualizer
-from experiment.meteo_france_data.scm_models_data.visualization import \
+from experiment.meteo_france_data.scm_models_data.visualization.hypercube_visualization.altitude_year_hypercube_visualizer import \
     Altitude_Hypercube_Year_Visualizer
-from experiment.meteo_france_data.scm_models_data.visualization import \
+from experiment.meteo_france_data.scm_models_data.visualization.hypercube_visualization.quantity_altitude_visualizer import \
     QuantityAltitudeHypercubeVisualizer
-from experiment.meteo_france_data.scm_models_data.visualization import ALL_ALTITUDES, \
-    SCM_STUDIES, study_iterator, study_iterator_global
-from experiment.meteo_france_data.scm_models_data.visualization import StudyVisualizer
+from experiment.meteo_france_data.scm_models_data.visualization.study_visualization.main_study_visualizer import \
+    ALL_ALTITUDES, SCM_STUDIES, study_iterator, study_iterator_global
+from experiment.meteo_france_data.scm_models_data.visualization.study_visualization.study_visualizer import \
+    StudyVisualizer
 from experiment.trend_analysis.univariate_test.abstract_gev_change_point_test import GevLocationChangePointTest, \
     GevScaleChangePointTest, GevShapeChangePointTest
 from utils import get_display_name_from_object_type
@@ -141,8 +142,8 @@ def fast_quantity_altitude_hypercube():
 
 def main_run():
     # fast_altitude_hypercube()
-    # fast_altitude_year_hypercube()
-    full_altitude_year_hypercube()
+    fast_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/hypercube_visualization/quantity_altitude_visualizer.py b/experiment/meteo_france_data/scm_models_data/visualization/hypercube_visualization/quantity_altitude_visualizer.py
index 399a075c247bae2afe95a8a49d68ed2b25508b6b..7cb8e55dba480f134e4a67a11ad548ff9930ea3d 100644
--- a/experiment/meteo_france_data/scm_models_data/visualization/hypercube_visualization/quantity_altitude_visualizer.py
+++ b/experiment/meteo_france_data/scm_models_data/visualization/hypercube_visualization/quantity_altitude_visualizer.py
@@ -1,6 +1,6 @@
 import pandas as pd
 
-from experiment.meteo_france_data.scm_models_data.visualization import \
+from experiment.meteo_france_data.scm_models_data.visualization.hypercube_visualization.altitude_hypercube_visualizer import \
     AltitudeHypercubeVisualizer
 
 
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 b8d0740be45965580dea6f4a7cf97be957ec5984..cc03044e4f0eafa82e61ab235e512d0ce116d8c2 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
@@ -2,6 +2,7 @@ import os
 import os.path as op
 from collections import OrderedDict
 from multiprocessing.pool import Pool
+from random import sample
 
 import math
 import matplotlib.pyplot as plt
@@ -112,6 +113,11 @@ class StudyVisualizer(VisualizationParameters):
         # INCREASE THE TEMPORAL STEPS FOR VISUALIZATION
         AbstractMarginFunction.VISUALIZATION_TEMPORAL_STEPS = 5
 
+        # Change point parameters
+        self.trend_test_class_for_change_point_test = None
+        self.starting_years_for_change_point_test = None
+        self.nb_massif_for_change_point_test = None
+
     @property
     def dataset(self):
         if self._dataset is None:
@@ -390,8 +396,37 @@ class StudyVisualizer(VisualizationParameters):
             massif_name_to_df_trend_type[massif_name] = df
         return massif_name_to_df_trend_type
 
-    def df_trend_spatio_temporal(self, trend_test_class, starting_years, nb_massif_for_fast_mode=None,
-                                 nb_top_likelihood_values=1):
+    def massif_name_to_gev_change_point_test_results(self, trend_test_class_for_change_point_test,
+                                                     starting_years_for_change_point_test,
+                                                     nb_massif_for_change_point_test=None):
+        if self.trend_test_class_for_change_point_test is None:
+            # Set the attribute is not already done
+            self.trend_test_class_for_change_point_test = trend_test_class_for_change_point_test
+            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
+            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
+        return self._massif_name_to_gev_change_point_test_results
+
+    @cached_property
+    def _massif_name_to_gev_change_point_test_results(self):
+        massif_name_to_gev_change_point_test_results = {}
+        massif_names = self.study.study_massif_names
+        if self.nb_massif_for_change_point_test is not None:
+            massif_names = sample(massif_names, self.nb_massif_for_change_point_test)
+        for massif_id, massif_name in enumerate(massif_names):
+            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)
+            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,
+                                 nb_massif_for_change_point_test=None):
         """
         Index are the massif
         Columns are the starting year
@@ -400,14 +435,14 @@ class StudyVisualizer(VisualizationParameters):
         :param starting_year_to_weight:
         :return:
         """
+        # Set the attributes
+
         massif_name_to_trend_res = {}
-        massif_names = self.study.study_massif_names
-        if nb_massif_for_fast_mode is not None:
-            massif_names = massif_names[:nb_massif_for_fast_mode]
-        for massif_id, massif_name in enumerate(massif_names):
-            years, smooth_maxima = self.smooth_maxima_x_y(massif_id)
-            trend_test_res, best_idxs = compute_gev_change_point_test_results(self.multiprocessing, smooth_maxima, starting_years,
-                                                                   trend_test_class, years)
+        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)
                               for i, (a, b, *_) in enumerate(trend_test_res)]
             massif_name_to_trend_res[massif_name] = list(zip(*trend_test_res))
@@ -415,7 +450,7 @@ class StudyVisualizer(VisualizationParameters):
         assert nb_res == 2
         all_massif_name_to_res = [{k: v[idx_res] for k, v in massif_name_to_trend_res.items()}
                                   for idx_res in range(nb_res)]
-        return [pd.DataFrame(massif_name_to_res, index=starting_years).transpose()
+        return [pd.DataFrame(massif_name_to_res, index=self.starting_years_for_change_point_test).transpose()
                 for massif_name_to_res in all_massif_name_to_res]
 
     @staticmethod
diff --git a/test/test_experiment/test_SCM_study.py b/test/test_experiment/test_SCM_study.py
index 0379f390dad5b87968d45321dc8b903eaf3e61d3..c039d98c5badc858cacc8725b575c44cb50cacf5 100644
--- a/test/test_experiment/test_SCM_study.py
+++ b/test/test_experiment/test_SCM_study.py
@@ -22,8 +22,7 @@ class TestSCMAllStudy(unittest.TestCase):
         for study_class in [ExtendedSafranSnowfall]:
             for study in study_iterator(study_class, only_first_one=True, verbose=False):
                 study_visualizer = StudyVisualizer(study, show=False, save_to_file=False, multiprocessing=True)
-                study_visualizer.df_trend_spatio_temporal(GevLocationChangePointTest, [1958, 1959, 1960],
-                                                          nb_massif_for_fast_mode=1)
+                study_visualizer.df_trend_spatio_temporal(GevLocationChangePointTest, [1958, 1959, 1960], nb_massif_for_change_point_test=3)
         self.assertTrue(True)
 
     def test_instantiate_studies(self):