From 336c9095c9e8701079dfa14e831bbdb324a4473d Mon Sep 17 00:00:00 2001
From: Le Roux Erwan <erwan.le-roux@irstea.fr>
Date: Fri, 21 Jun 2019 09:09:46 +0200
Subject: [PATCH] [STATION DATA] comparison for visualization difference

---
 .../stations_data/main_station_comparison.py  |  4 +--
 .../main_station_comparison_all_altitudes.py  | 36 +++++++++++++++++++
 .../comparisons_visualization.py              | 17 +++++----
 3 files changed, 49 insertions(+), 8 deletions(-)
 create mode 100644 experiment/meteo_france_data/stations_data/main_station_comparison_all_altitudes.py

diff --git a/experiment/meteo_france_data/stations_data/main_station_comparison.py b/experiment/meteo_france_data/stations_data/main_station_comparison.py
index 04922666..9aaddcda 100644
--- a/experiment/meteo_france_data/stations_data/main_station_comparison.py
+++ b/experiment/meteo_france_data/stations_data/main_station_comparison.py
@@ -57,9 +57,9 @@ def quick_metric_analysis():
 if __name__ == '__main__':
     # wrong_example3()
     # visualize_fast_comparison()
-    # visualize_all_stations()
+    visualize_all_stations()
     # quick_metric_analysis()
     # wrong_example2()
-    visualize_non_nan_station()
+    # visualize_non_nan_station()
     # example()
 
diff --git a/experiment/meteo_france_data/stations_data/main_station_comparison_all_altitudes.py b/experiment/meteo_france_data/stations_data/main_station_comparison_all_altitudes.py
new file mode 100644
index 00000000..9f1456bb
--- /dev/null
+++ b/experiment/meteo_france_data/stations_data/main_station_comparison_all_altitudes.py
@@ -0,0 +1,36 @@
+from experiment.meteo_france_data.scm_models_data.visualization.study_visualization.main_study_visualizer import \
+    ALL_ALTITUDES_WITH_20_STATIONS_AT_LEAST, ALL_ALTITUDES
+from experiment.meteo_france_data.stations_data.visualization.comparisons_visualization.comparisons_visualization import \
+    ComparisonsVisualization, path_backup_csv_file
+from experiment.trend_analysis.univariate_test.abstract_gev_change_point_test import GevLocationChangePointTest, \
+    GevScaleChangePointTest, GevShapeChangePointTest
+
+
+# Create the map with the average error per massif
+
+def visualize_all_stations_all_altitudes():
+    vizu = ComparisonsVisualization(altitudes=ALL_ALTITUDES, margin=150, keep_only_station_without_nan_values=True)
+    vizu.visualize_maximum(visualize_metric_only=False)
+
+
+# Zoom on each massif
+
+def example():
+    vizu = ComparisonsVisualization(altitudes=[600], normalize_observations=False, keep_only_station_without_nan_values=False)
+    vizu._visualize_ax_main(vizu.plot_maxima, vizu.comparisons[0], 'Mercantour', show=True, direct=True)
+    # vizu = ComparisonsVisualization(altitudes=[300], normalize_observations=False, keep_only_station_without_nan_values=False)
+    # vizu._visualize_ax_main(vizu.plot_maxima, vizu.comparisons[0], 'Haut_Var-Haut_Verdon', show=True, direct=True)
+    # vizu = ComparisonsVisualization(altitudes=[1800], normalize_observations=False, keep_only_station_without_nan_values=False)
+    # vizu._visualize_ax_main(vizu.plot_maxima, vizu.comparisons[0], 'Grandes-Rousses', show=True, direct=True)
+
+def example_good():
+    # vizu = ComparisonsVisualization(altitudes=[900], normalize_observations=False, keep_only_station_without_nan_values=False)
+    # vizu._visualize_ax_main(vizu.plot_maxima, vizu.comparisons[0], 'Beaufortain', show=True, direct=True)
+    vizu = ComparisonsVisualization(altitudes=[900], normalize_observations=False, keep_only_station_without_nan_values=False)
+    vizu._visualize_ax_main(vizu.plot_maxima, vizu.comparisons[0], 'Oisans', show=True, direct=True)
+
+if __name__ == '__main__':
+    # visualize_all_stations_all_altitudes()
+    # example()
+    example_good()
+
diff --git a/experiment/meteo_france_data/stations_data/visualization/comparisons_visualization/comparisons_visualization.py b/experiment/meteo_france_data/stations_data/visualization/comparisons_visualization/comparisons_visualization.py
index d300ddf1..89bc4334 100644
--- a/experiment/meteo_france_data/stations_data/visualization/comparisons_visualization/comparisons_visualization.py
+++ b/experiment/meteo_france_data/stations_data/visualization/comparisons_visualization/comparisons_visualization.py
@@ -137,17 +137,22 @@ class ComparisonsVisualization(VisualizationParameters):
                                           cmap=plt.cm.Greens,
                                           vmin=0,
                                           vmax=100,
-                                          label='agreement on trend type classification (%)' )
+                                          label='agreement on trend type classification (%)')
+        # print(df.sort_values([MAE_COLUMN_NAME]))
         # Display the mae score
         serie_mae = df.groupby([MASSIF_COLUMN_NAME]).mean()[MAE_COLUMN_NAME]
+        # Display the sorted mae serie
+
+
         AbstractStudy.visualize_study(massif_name_to_value=serie_mae.to_dict(),
-                                      default_color_for_missing_massif='b',
+                                      default_color_for_missing_massif='w',
                                       cmap=plt.cm.Reds,
                                       vmin=0,
                                       vmax=65,
-                                      label='average absolute difference between annual maxima snowfall (mm)')
+                                      label='average absolute difference between annual maxima snowfall (mm)',
+                                      scaled=False)
 
-    def _visualize_ax_main(self, plot_function, comparison: ComparisonAnalysis, massif, ax=None, show=False):
+    def _visualize_ax_main(self, plot_function, comparison: ComparisonAnalysis, massif, ax=None, show=False, direct=False):
         if ax is None:
             _, ax = plt.subplots(1, 1, figsize=self.figsize)
         ax2 = ax.twinx()
@@ -199,7 +204,8 @@ class ComparisonsVisualization(VisualizationParameters):
                     ordered_value_dict.update(plot_ordered_value_dict)
 
             ax.set_title('{} at {}m'.format(massif, comparison.altitude))
-            ax.legend(prop={'size': 5})
+            size = 5 if not direct else 20
+            ax.legend(prop={'size': size})
 
             # Store only results for the stations
             if REANALYSE_STR not in i:
@@ -251,7 +257,6 @@ class ComparisonsVisualization(VisualizationParameters):
             ax2.plot(starting_years[::step], [t[4] for t in trend_test_res][::step], color=plot_color, marker='x')
         # Plot maxima
         ax.grid()
-        # print("here")
         ax.plot(years, maxima, label=label, color=plot_color)
         return ordered_dict
 
-- 
GitLab