diff --git a/extreme_data/meteo_france_data/scm_models_data/utils_function.py b/extreme_data/meteo_france_data/scm_models_data/utils_function.py
index 5ee9281a97f9720a13b3e5728773e2c58cf754fc..55440cde70d77ff77ca30c79005a939a1e39b8c2 100644
--- a/extreme_data/meteo_france_data/scm_models_data/utils_function.py
+++ b/extreme_data/meteo_france_data/scm_models_data/utils_function.py
@@ -42,12 +42,8 @@ def fitted_stationary_gev_with_uncertainty_interval(x_gev, fit_method=MarginFitM
             return_level_list = ReturnLevelBootstrap(fit_method, model_class, starting_year, x_gev,
                                                      quantile_level).compute_all_return_level()
             # Remove infinite return levels and return level
-            len_before_remove = len(return_level_list)
-            threshold = 2000
-            return_level_list = [r for r in return_level_list if (not np.isinf(r)) and (r < threshold)]
-            len_after_remove = len(return_level_list)
-            if len_after_remove < len_before_remove:
-                print('Nb of fit removed (inf or > {}:'.format(threshold), len_before_remove - len_after_remove)
+            # percentage_of_inf = 100 * sum([np.isinf(r) for r in return_level_list]) / len(return_level_list)
+            # print('Percentage of fit with inf = {} \%'.format(percentage_of_inf))
             confidence_interval = tuple([np.quantile(return_level_list, q)
                                          for q in AbstractExtractEurocodeReturnLevel.bottom_and_upper_quantile])
             mean_estimate = gev_param.quantile(quantile_level)
diff --git a/extreme_fit/estimator/margin_estimator/abstract_margin_estimator.py b/extreme_fit/estimator/margin_estimator/abstract_margin_estimator.py
index f233fa0ae67efe0cd7d16f5984298ccdc6c8c93c..168d7a10e4fc0f2ca728cd7618e7ee4a5d626044 100644
--- a/extreme_fit/estimator/margin_estimator/abstract_margin_estimator.py
+++ b/extreme_fit/estimator/margin_estimator/abstract_margin_estimator.py
@@ -75,11 +75,16 @@ class LinearMarginEstimator(AbstractMarginEstimator):
             assert not np.isinf(nllh)
         return nllh
 
-    def sorted_empirical_standard_gumbel_quantiles(self, split=Split.all):
+    def sorted_empirical_standard_gumbel_quantiles(self, split=Split.all, coordinate_for_filter=None):
         sorted_empirical_quantiles = []
         maxima_values = self.dataset.maxima_gev(split=split)
         coordinate_values = self.dataset.df_coordinates(split=split).values
         for maximum, coordinate in zip(maxima_values, coordinate_values):
+            if coordinate_for_filter is not None:
+                assert len(coordinate) == len(coordinate_for_filter)
+                keep = any([(f is not None) and (c == f) for c, f in zip(coordinate, coordinate_for_filter)])
+                if not keep:
+                    continue
             gev_param = self.function_from_fit.get_params(
                 coordinate=coordinate,
                 is_transformed=False)
diff --git a/projects/altitude_spatial_model/altitudes_fit/main_altitudes_studies.py b/projects/altitude_spatial_model/altitudes_fit/main_altitudes_studies.py
index 0f660a59e366c246cc22693bceb44ea41df96864..c0199b7ce32d7afeba832305004eda96f096439f 100644
--- a/projects/altitude_spatial_model/altitudes_fit/main_altitudes_studies.py
+++ b/projects/altitude_spatial_model/altitudes_fit/main_altitudes_studies.py
@@ -29,27 +29,29 @@ from projects.altitude_spatial_model.altitudes_fit.one_fold_analysis.altitude_gr
 from projects.altitude_spatial_model.altitudes_fit.one_fold_analysis.plot_total_aic import plot_individual_aic
 
 from extreme_data.meteo_france_data.scm_models_data.safran.safran import SafranSnowfall1Day, SafranSnowfall3Days, \
-    SafranSnowfall5Days, SafranSnowfall7Days, SafranDateFirstSnowfall, SafranPrecipitation1Day, SafranPrecipitation3Days
+    SafranSnowfall5Days, SafranSnowfall7Days, SafranDateFirstSnowfall, SafranPrecipitation1Day, \
+    SafranPrecipitation3Days, SafranSnowfallCenterOnDay1dayMeanRate, SafranSnowfallNotCenterOnDay1day
 from extreme_data.meteo_france_data.scm_models_data.utils import Season
 
 
 def main():
-    study_classes = [SafranSnowfall2020, SafranSnowfall2019,
-                     SafranSnowfall1Day, SafranSnowfall3Days,
-                     SafranSnowfall5Days, SafranSnowfall7Days][:3]
+    study_classes = [SafranSnowfall1Day
+                     , SafranSnowfall3Days,
+                     SafranSnowfall5Days, SafranSnowfall7Days][:1]
     seasons = [Season.annual, Season.winter, Season.spring, Season.automn][:1]
 
     set_seed_for_test()
-    model_must_pass_the_test = True
+    model_must_pass_the_test = False
+    AbstractExtractEurocodeReturnLevel.ALPHA_CONFIDENCE_INTERVAL_UNCERTAINTY = 0.2
 
-    fast = None
+    fast = True
     if fast is None:
-        massif_names = None
-        altitudes_list = altitudes_for_groups[2:3]
+        massif_names = ['Vanoise']
+        altitudes_list = altitudes_for_groups[:]
     elif fast:
         AbstractExtractEurocodeReturnLevel.NB_BOOTSTRAP = 10
-        massif_names = ['Vanoise', 'Haute-Maurienne', 'Vercors'][:2]
-        altitudes_list = altitudes_for_groups[3:]
+        massif_names = ['Vanoise', 'Haute-Maurienne', 'Vercors'][:1]
+        altitudes_list = altitudes_for_groups[1:2]
     else:
         massif_names = None
         altitudes_list = altitudes_for_groups[:]
diff --git a/projects/altitude_spatial_model/altitudes_fit/one_fold_analysis/altitudes_studies_visualizer_for_non_stationary_models.py b/projects/altitude_spatial_model/altitudes_fit/one_fold_analysis/altitudes_studies_visualizer_for_non_stationary_models.py
index 1e4ec4f0022f8f99f66da7405b3fcee796dfb2fa..c5cb88181887cb78171f752c78acbbd732913dda 100644
--- a/projects/altitude_spatial_model/altitudes_fit/one_fold_analysis/altitudes_studies_visualizer_for_non_stationary_models.py
+++ b/projects/altitude_spatial_model/altitudes_fit/one_fold_analysis/altitudes_studies_visualizer_for_non_stationary_models.py
@@ -508,22 +508,22 @@ class AltitudesStudiesVisualizerForNonStationaryModels(StudyVisualizer):
     def plot_qqplots(self):
         for massif_name, one_fold_fit in self.massif_name_to_one_fold_fit.items():
             ax = plt.gca()
-            model_name = self.massif_name_to_best_name[massif_name]
             altitudes = self.massif_name_to_massif_altitudes[massif_name]
             massif_name_corrected = massif_name.replace('_', ' ')
-            label = '{} for altitudes  {}'.format(massif_name_corrected, ' & '.join([str(a) + 'm' for a in altitudes]))
-
-
 
             all_quantiles = []
 
-            standard_gumbel_quantiles = one_fold_fit.standard_gumbel_quantiles()
-
+            for altitude in self.studies.altitudes:
+                coordinate_for_filter = (altitude, None)
+                unconstrained_empirical_quantiles = one_fold_fit.best_estimator.sorted_empirical_standard_gumbel_quantiles(coordinate_for_filter=coordinate_for_filter)
+                n = len(unconstrained_empirical_quantiles)
+                assert n == 61
+                standard_gumbel_quantiles = one_fold_fit.standard_gumbel_quantiles(n=n)
+                ax.plot(standard_gumbel_quantiles, unconstrained_empirical_quantiles, linestyle='None',
+                        label='{} m'.format(altitude), marker='o')
 
-            unconstrained_empirical_quantiles = one_fold_fit.best_estimator.sorted_empirical_standard_gumbel_quantiles()
-            all_quantiles = standard_gumbel_quantiles + unconstrained_empirical_quantiles
-            ax.plot(standard_gumbel_quantiles, unconstrained_empirical_quantiles, linestyle='None',
-                    label=label + '\n(selected model is ${}$)'.format(model_name), marker='o')
+                all_quantiles.extend(standard_gumbel_quantiles)
+                all_quantiles.extend(unconstrained_empirical_quantiles)
 
             size_label = 20
             ax.set_xlabel("Theoretical quantile", fontsize=size_label)
@@ -538,7 +538,10 @@ class AltitudesStudiesVisualizerForNonStationaryModels(StudyVisualizer):
             ticks = [i for i in range(ceil(ax_lim[0]), floor(ax_lim[1]) + 1)]
             ax.set_xticks(ticks)
             ax.set_yticks(ticks)
-            ax.tick_params(labelsize=15)
+            labelsize = 15
+            ax.tick_params(labelsize=labelsize)
             plot_name = 'qqplot/{}'.format(massif_name_corrected)
+            handles, labels = ax.get_legend_handles_labels()
+            ax.legend(handles[::-1], labels[::-1], prop={'size': labelsize})
             self.studies.show_or_save_to_file(plot_name=plot_name, show=self.show, no_title=True)
             plt.close()
diff --git a/projects/altitude_spatial_model/altitudes_fit/one_fold_analysis/one_fold_fit.py b/projects/altitude_spatial_model/altitudes_fit/one_fold_analysis/one_fold_fit.py
index 75fcfd1b3fba77caba456cd07f7f7bc678973429..162e555928d27639c33d5d65d4f91fc91ad38284 100644
--- a/projects/altitude_spatial_model/altitudes_fit/one_fold_analysis/one_fold_fit.py
+++ b/projects/altitude_spatial_model/altitudes_fit/one_fold_analysis/one_fold_fit.py
@@ -330,9 +330,10 @@ class OneFoldFit(object):
         goodness_of_fit_anderson_test = goodness_of_fit_anderson(quantiles, self.SIGNIFICANCE_LEVEL)
         return goodness_of_fit_anderson_test
 
-    def standard_gumbel_quantiles(self):
+    def standard_gumbel_quantiles(self, n=None):
         standard_gumbel_distribution = GevParams(loc=0, scale=1, shape=0)
-        n = len(self.dataset.coordinates)
+        if n is None:
+            n = len(self.dataset.coordinates)
         standard_gumbel_quantiles = [standard_gumbel_distribution.quantile(i / (n + 1)) for i in range(1, n + 1)]
         return standard_gumbel_quantiles
 
diff --git a/projects/altitude_spatial_model/altitudes_fit/one_fold_analysis/plot_total_aic.py b/projects/altitude_spatial_model/altitudes_fit/one_fold_analysis/plot_total_aic.py
index 6ebcbd94da8c0a415c5261e94278a751abba583d..a8e3dffb24fb3e549525d4fbc4ad99ae92eaedeb 100644
--- a/projects/altitude_spatial_model/altitudes_fit/one_fold_analysis/plot_total_aic.py
+++ b/projects/altitude_spatial_model/altitudes_fit/one_fold_analysis/plot_total_aic.py
@@ -15,8 +15,8 @@ from projects.exceeding_snow_loads.utils import dpi_paper1_figure
 
 def plots(visualizer: AltitudesStudiesVisualizerForNonStationaryModels):
     # visualizer.plot_shape_map()
-    visualizer.plot_moments()
-    # visualizer.plot_qqplots()
+    # visualizer.plot_moments()
+    visualizer.plot_qqplots()
     # for std in [True, False]:
     #     visualizer.studies.plot_mean_maxima_against_altitude(std=std)
 
diff --git a/projects/altitude_spatial_model/altitudes_fit/plots/plot_coherence_curves.py b/projects/altitude_spatial_model/altitudes_fit/plots/plot_coherence_curves.py
index 9b7c74c7915bdacf1285bacb46df1024446e1148..d8b762225beb5cf457c55ede3f64b9d85e596f49 100644
--- a/projects/altitude_spatial_model/altitudes_fit/plots/plot_coherence_curves.py
+++ b/projects/altitude_spatial_model/altitudes_fit/plots/plot_coherence_curves.py
@@ -2,6 +2,8 @@ from typing import List
 import matplotlib.pyplot as plt
 import numpy as np
 
+from extreme_fit.model.result_from_model_fit.result_from_extremes.abstract_extract_eurocode_return_level import \
+    AbstractExtractEurocodeReturnLevel
 from projects.altitude_spatial_model.altitudes_fit.one_fold_analysis.altitudes_studies_visualizer_for_non_stationary_models import \
     AltitudesStudiesVisualizerForNonStationaryModels
 from projects.altitude_spatial_model.altitudes_fit.one_fold_analysis.one_fold_fit import OneFoldFit
@@ -103,9 +105,9 @@ def plot_coherence_curve(ax, i, x_all_list, values_all_list, all_bound_list,
                 lower_bound, upper_bound = bounds
                 f = ax.fill_between if elevation_as_xaxis else ax.fill_betweenx
                 if legend and not legend_line:
-                    print('here2')
                     model_name = 'piecewise elevational-temporal models in 2019' if is_altitudinal else 'pointwise distributions'
-                    fill_label = "95\% confidence interval for the {}".format(model_name) if j == 0 else None
+                    percentage = AbstractExtractEurocodeReturnLevel.percentage_confidence_interval
+                    fill_label = "{}\% confidence interval for the {}".format(percentage, model_name) if j == 0 else None
                     f(x_list, lower_bound, upper_bound, color=color, alpha=0.2, label=fill_label)
                 else:
                     f(x_list, lower_bound, upper_bound, color=color, alpha=0.2)