diff --git a/extreme_trend/visualizers/study_visualizer_for_non_stationary_trends.py b/extreme_trend/visualizers/study_visualizer_for_non_stationary_trends.py
index 15ff9be2d7022cc6f0b13f1650bd7d24169ea7e5..d46c8ffd58f5cd873097f3108485d21c54899925 100644
--- a/extreme_trend/visualizers/study_visualizer_for_non_stationary_trends.py
+++ b/extreme_trend/visualizers/study_visualizer_for_non_stationary_trends.py
@@ -413,9 +413,15 @@ class StudyVisualizerForNonStationaryTrends(StudyVisualizer):
                 b[2].append(diff)
 
         b = [np.mean(np.array(e)) for e in b]
-        # Return the concatenated results
-        concatenated_result = list(a) + list(b)
-        return concatenated_result
+        # Third array for curve of percentage of exceedance for return levels
+        c = [[] , [],  []]
+        for _, eurocode, uncertainty in triplet:
+            metrics = [uncertainty.confidence_interval[0], uncertainty.mean_estimate, uncertainty.confidence_interval[1]]
+            for j, metric in enumerate(metrics):
+                relative_difference = 100 * (metric - eurocode) / eurocode
+                c[j].append(relative_difference)
+        c = np.array([np.mean(np.array(e)) if len(e) > 0 else 0 for e in c])
+        return a, b, c
 
     # Part 3 - QQPLOT
 
diff --git a/projects/exceeding_snow_loads/section_results/main_result_trends_and_return_levels.py b/projects/exceeding_snow_loads/section_results/main_result_trends_and_return_levels.py
index 9053d8ce360c89bdfcdeeaa5db42239bc3e31514..6205582112fca1ac1d69981216b63729038bff0d 100644
--- a/projects/exceeding_snow_loads/section_results/main_result_trends_and_return_levels.py
+++ b/projects/exceeding_snow_loads/section_results/main_result_trends_and_return_levels.py
@@ -72,12 +72,12 @@ def intermediate_result(altitudes, massif_names=None,
                 _ = compute_minimized_aic(visualizer)
 
         # Plots
-        plot_trend_map(altitude_to_visualizer)
-        plot_trend_curves(altitude_to_visualizer={a: v for a, v in altitude_to_visualizer.items() if a >= 900})
+        # plot_trend_map(altitude_to_visualizer)
+        # plot_trend_curves(altitude_to_visualizer={a: v for a, v in altitude_to_visualizer.items() if a >= 900})
         plot_uncertainty_massifs(altitude_to_visualizer)
         plot_uncertainty_histogram(altitude_to_visualizer)
-        plot_selection_curves(altitude_to_visualizer)
-        plot_intensity_against_gumbel_quantile_for_3_examples(altitude_to_visualizer)
+        # plot_selection_curves(altitude_to_visualizer)
+        # plot_intensity_against_gumbel_quantile_for_3_examples(altitude_to_visualizer)
 
         # Additional plots
         # uncertainty_interval_size(altitude_to_visualizer)
@@ -93,7 +93,7 @@ def major_result():
     # study_classes = [CrocusSnowLoad3Days, CrocusSnowLoad5Days, CrocusSnowLoad7Days][::-1]
     altitudes = [300, 600, 900, 1800, 2700][:2]
     altitudes = [300, 600, 900, 1200, 1500, 1800]
-    altitudes = paper_altitudes
+    # altitudes = paper_altitudes
     # altitudes = [900, 1800, 270{{0][:1]
     for study_class in study_classes:
         print('new stuy class', study_class)
diff --git a/projects/exceeding_snow_loads/section_results/plot_diagnosis_risk.py b/projects/exceeding_snow_loads/section_results/plot_diagnosis_risk.py
index ea587bd2079e9a4d6efdf2ab561bcdc3e89bc3d8..f15a554d18d3e3673550e8d6f65b90d482fea040 100644
--- a/projects/exceeding_snow_loads/section_results/plot_diagnosis_risk.py
+++ b/projects/exceeding_snow_loads/section_results/plot_diagnosis_risk.py
@@ -23,7 +23,7 @@ def plot_diagnosis_risk(altitude_to_visualizer):
 
 
 def plot_mean_exceedance(visualizers, altitudes, ax, model_subset_for_uncertainty, ci_method):
-    l = [v.excess_metrics(ci_method, model_subset_for_uncertainty)[3:] for v in visualizers]
+    l = [v.excess_metrics(ci_method, model_subset_for_uncertainty)[1] for v in visualizers]
     diff, diff_c, diff_e = zip(*l)
     ax.plot(altitudes, diff, marker='o', color='red', label='diff')
     ax.plot(altitudes, diff_c, marker='o', color='yellow', label='diff c')
diff --git a/projects/exceeding_snow_loads/section_results/plot_uncertainty_curves.py b/projects/exceeding_snow_loads/section_results/plot_uncertainty_curves.py
index cebdc81c014259ebbf1d1a551aad492fa14880a4..74767c3313784fd8e87a00b3b693e897f6fccbca 100644
--- a/projects/exceeding_snow_loads/section_results/plot_uncertainty_curves.py
+++ b/projects/exceeding_snow_loads/section_results/plot_uncertainty_curves.py
@@ -122,10 +122,10 @@ def plot_single_uncertainty_massif_and_non_stationary_context(ax, massif_name, m
     ax.set_xlim([200, 1900])
     if massif_name in ['Maurienne', 'Chartreuse', 'Beaufortain']:
         ax.set_ylim([-1.5, 13.5])
-        ax.set_yticks([2 * i for i in range(7)])
+        ax.set_yticks([-1] + [2 * i for i in range(7)])
     if massif_name in ['Vercors']:
-        ax.set_ylim([-1, 10])
-        ax.set_yticks([2 * i for i in range(6)])
+        ax.set_ylim([-1.5, 10.5])
+        ax.set_yticks([-1] + [2 * i for i in range(6)])
 
 
 
diff --git a/projects/exceeding_snow_loads/section_results/plot_uncertainty_histogram.py b/projects/exceeding_snow_loads/section_results/plot_uncertainty_histogram.py
index d6d31e60540a542c85467a039425b5f9931ac9de..923e9211fc30cf6b5cb44fef127d1dae093d9fbc 100644
--- a/projects/exceeding_snow_loads/section_results/plot_uncertainty_histogram.py
+++ b/projects/exceeding_snow_loads/section_results/plot_uncertainty_histogram.py
@@ -3,6 +3,8 @@ import matplotlib.pyplot as plt
 import numpy as np
 
 from extreme_data.eurocode_data.utils import EUROCODE_ALTITUDES
+from extreme_fit.model.result_from_model_fit.result_from_extremes.abstract_extract_eurocode_return_level import \
+    AbstractExtractEurocodeReturnLevel
 from projects.exceeding_snow_loads.utils import dpi_paper1_figure
 from extreme_trend.visualizers.study_visualizer_for_non_stationary_trends import \
     StudyVisualizerForNonStationaryTrends
@@ -44,7 +46,13 @@ def plot_histogram(altitude_to_visualizer, model_subset_for_uncertainty):
             width = 100
         else:
             width = 200
-        plot_histogram_ci_method(visualizers, model_subset_for_uncertainty, ci_method, ax, bincenters, width=width)
+        legend_size = 10
+        # Plot histogram on the left axis
+        plot_histogram_ci_method(visualizers, model_subset_for_uncertainty, ci_method, ax, bincenters, width, legend_size)
+
+        # Plot percentages of return level excess on the right axis
+        plot_percentage_of_excess(visualizers, model_subset_for_uncertainty, ci_method, ax.twinx(), fontsize_label, legend_size)
+
 
     ax.set_xticks(altitudes)
     ax.tick_params(labelsize=fontsize_label)
@@ -55,7 +63,7 @@ def plot_histogram(altitude_to_visualizer, model_subset_for_uncertainty):
     #               'exceeds French standards (\%)', fontsize=fontsize_label)
     ax.set_ylabel('Massifs exceeding French standards (\%)', fontsize=fontsize_label)
     ax.set_xlabel('Altitude (m)', fontsize=fontsize_label)
-    ax.set_ylim([0, 100])
+    ax.set_ylim([0, 110])
     ax.yaxis.grid()
 
     ax_twiny = ax.twiny()
@@ -66,20 +74,19 @@ def plot_histogram(altitude_to_visualizer, model_subset_for_uncertainty):
 
     nb_massif_names = [len(v.intersection_of_massif_names_fitted) for v in altitude_to_visualizer.values()]
     ax_twiny.set_xticklabels(nb_massif_names)
-    ax_twiny.set_xlabel('Total number of massifs at each altitude (for the percentage)', fontsize=fontsize_label)
+    ax_twiny.set_xlabel('Number of massifs at each altitude (for the percentage and the mean)', fontsize=fontsize_label)
 
-    ax.set_yticks([10 * i for i in range(11)])
+    ax.set_yticks([20 * i for i in range(6)])
     visualizer.plot_name = 'Percentages of exceedance with {}'.format(
         get_display_name_from_object_type(model_subset_for_uncertainty))
-    # visualizer.show = True
-    visualizer.show_or_save_to_file(no_title=True, dpi=dpi_paper1_figure)
+    visualizer.show_or_save_to_file(no_title=True, dpi=dpi_paper1_figure, tight_layout=True)
     ax.clear()
     ax_twiny.clear()
     plt.close()
 
 
-def plot_histogram_ci_method(visualizers, model_subset_for_uncertainty, ci_method, ax, bincenters, width):
-    three_percentages_of_excess = [v.excess_metrics(ci_method, model_subset_for_uncertainty)[:3] for v in
+def plot_histogram_ci_method(visualizers, model_subset_for_uncertainty, ci_method, ax, bincenters, width, legend_size=10):
+    three_percentages_of_excess = [v.excess_metrics(ci_method, model_subset_for_uncertainty)[0] for v in
                                    visualizers]
     epsilon = 0.5
     three_percentages_of_excess = [(a, b, c) if a == b else (max(epsilon, a), b, c) for (a, b, c) in
@@ -90,4 +97,47 @@ def plot_histogram_ci_method(visualizers, model_subset_for_uncertainty, ci_metho
     yerr = np.array([[d[1] - d[0], d[2] - d[1]] for d in three_percentages_of_excess]).transpose()
     label = ci_method_to_label[ci_method]
     color = ci_method_to_color[ci_method]
-    ax.bar(bincenters, y, width=width, color=color, yerr=yerr, label=label, ecolor='black', capsize=5)
+    ecolor = 'black'
+    label_name = 'Percentage of massifs exceeding'
+    # ax.bar(bincenters, y, width=width, color=color, yerr=yerr, label=label_name, ecolor=ecolor, capsize=5)
+    ax.bar(bincenters, y, width=width, color=color, label=label_name)
+    # Just to add something in the legend
+    label_confidence_interval = get_label_confidence_interval(label_name)
+    ax.errorbar(bincenters, y, yerr=yerr, label=label_confidence_interval,
+                fmt='none', color=ecolor, capsize=5)
+
+    ax.legend(loc='upper left', prop={'size': legend_size})
+
+
+def plot_percentage_of_excess(visualizers, model_subset_for_uncertainty, ci_method, ax, fontsize_label, legend_size=10):
+    l = [v.excess_metrics(ci_method, model_subset_for_uncertainty)[2] for v in visualizers]
+    lower_bound, mean, upper_bound = list(zip(*l))
+    other_mean = [e[1] for e in l]
+    altitudes = [v.altitude for v in visualizers]
+    # Display parameters
+    color = 'blue'
+    alpha = 0.2
+    full_label_name = 'Mean relative difference between\n' \
+                      '50-year return levels and French standards (\%)'
+
+    label_name = 'Mean relative difference'
+    print('mean relative difference', mean)
+    ax.plot(altitudes, mean, linestyle='--', marker='o', color=color,
+            label=label_name)
+
+    label_confidence_interval = get_label_confidence_interval(label_name)
+    ax.fill_between(altitudes, lower_bound, upper_bound, color=color, alpha=alpha,
+                    label=label_confidence_interval)
+
+    ax.tick_params(labelsize=fontsize_label)
+    ax.legend(loc='upper right', prop={'size': legend_size})
+    ax.set_ylabel(full_label_name, fontsize=fontsize_label)
+    ax.set_ylim([0, 110])
+
+
+def get_label_confidence_interval(label_name):
+    confidence_interval_str = '\n{}'.format(AbstractExtractEurocodeReturnLevel.percentage_confidence_interval)
+    confidence_interval_str += ' \% confidence interval'
+    label_confidence_interval = label_name + confidence_interval_str
+    return label_confidence_interval
+