From e24ab386962803d38d9b474c1dacfea4ca129a92 Mon Sep 17 00:00:00 2001
From: Le Roux Erwan <erwan.le-roux@irstea.fr>
Date: Wed, 11 Dec 2019 19:14:58 +0100
Subject: [PATCH] [PAPER 1] add first version for the spatio temporal plot

---
 ...in_spatio_temporal_density_wrt_altitude.py | 80 +++++++++++++++++++
 1 file changed, 80 insertions(+)
 create mode 100644 experiment/paper_past_snow_loads/discussion_data_comparison_with_eurocode/main_spatio_temporal_density_wrt_altitude.py

diff --git a/experiment/paper_past_snow_loads/discussion_data_comparison_with_eurocode/main_spatio_temporal_density_wrt_altitude.py b/experiment/paper_past_snow_loads/discussion_data_comparison_with_eurocode/main_spatio_temporal_density_wrt_altitude.py
new file mode 100644
index 00000000..cca605ce
--- /dev/null
+++ b/experiment/paper_past_snow_loads/discussion_data_comparison_with_eurocode/main_spatio_temporal_density_wrt_altitude.py
@@ -0,0 +1,80 @@
+from experiment.meteo_france_data.scm_models_data.crocus.crocus import CrocusDepth
+from experiment.meteo_france_data.scm_models_data.crocus.crocus_variables import CrocusDepthVariable
+from experiment.meteo_france_data.scm_models_data.visualization.study_visualization.main_study_visualizer import \
+    study_iterator_global, SCM_STUDY_CLASS_TO_ABBREVIATION, snow_density_str
+from experiment.meteo_france_data.scm_models_data.visualization.study_visualization.study_visualizer import \
+    StudyVisualizer
+import matplotlib.pyplot as plt
+
+from experiment.paper_past_snow_loads.discussion_data_comparison_with_eurocode.crocus_study_comparison_with_eurocode import \
+    CrocusDifferenceSnowLoad, \
+    CrocusSnowDensityAtMaxofSwe, CrocusDifferenceSnowLoadRescaledAndEurocodeToSeeSynchronization, \
+    CrocusSnowDepthAtMaxofSwe, CrocusSnowDepthDifference
+from experiment.paper_past_snow_loads.paper_utils import dpi_paper1_figure
+
+
+def density_wrt_altitude():
+    """
+    We choose these massif because each represents a different eurocode region
+    we also choose them because they belong to a different climatic area
+    :return:
+    """
+    save_to_file = False
+    study_class = CrocusSnowDensityAtMaxofSwe
+    altitudes = [900, 1200, 1500, 1800, 2100, 2400, 2700][:-1]
+
+    for spatial_plot in [False, True][::-1]:
+
+        if spatial_plot:
+            marker_lockeys_axis = [
+                                      ('magenta', 'Ubaye'),
+                                      ('darkmagenta', 'Vercors'),
+                                      ('mediumpurple', 'Beaufortain'),
+                                  ][:]
+        else:
+            marker_lockeys_axis = [
+                                      ('magenta', [1958, 1987]),
+                                      ('darkmagenta', [1968, 1997]),
+                                      ('mediumpurple', [1978, 2007]),
+                                      ('blue', [1988, 2017]),
+                                  ][:]
+
+        ax = plt.gca()
+
+        j_to_mean_densities = {
+            i: [] for i in range(len(marker_lockeys_axis))
+        }
+        for study in study_iterator_global([study_class], altitudes=altitudes):
+            study_visualizer = StudyVisualizer(study, save_to_file=save_to_file,
+                                               verbose=True,
+                                               multiprocessing=True)
+            for j, (color, lockeys) in enumerate(marker_lockeys_axis):
+                if spatial_plot:
+                    mean_density = study.observations_annual_maxima.df_maxima_gev.loc[lockeys, :].mean()
+                else:
+                    mean_density = study.observations_annual_maxima.df_maxima_gev.loc[:, lockeys[0]:lockeys[1]].mean().mean()
+                j_to_mean_densities[j].append(mean_density)
+
+        for j, (color, lockeys) in enumerate(marker_lockeys_axis):
+            mean_densities = j_to_mean_densities[j]
+            if spatial_plot:
+                label = lockeys
+            else:
+                label = '-'.join([str(e) for e in lockeys])
+            ax.plot(altitudes, mean_densities, color=color, label=label)
+
+        snow_abbreviation = SCM_STUDY_CLASS_TO_ABBREVIATION[study_class]
+        ax.legend()
+        tight_pad = {'h_pad': 0.2}
+        # ax.set_ylim(ylim)
+        # ax.set_xlim([1957, 2018])
+        ax.xaxis.set_ticks(altitudes)
+        # ax.yaxis.set_ticks(yticks)
+        study_visualizer.plot_name = ''
+        study_visualizer.show_or_save_to_file(no_title=True, tight_layout=True,
+                                              tight_pad=tight_pad, dpi=dpi_paper1_figure)
+        ax.clear()
+
+
+if __name__ == '__main__':
+    density_wrt_altitude()
-- 
GitLab