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