From 8341bd13075926911b6c54a57c168f1beb624d2b Mon Sep 17 00:00:00 2001 From: Le Roux Erwan <erwan.le-roux@irstea.fr> Date: Wed, 3 Feb 2021 19:29:02 +0100 Subject: [PATCH] [contrasting] add gap between study. and add safran 2019 from max files. add main_comparison_histo.py --- .../main_comparison_histo.py | 47 +++++++++++++++++++ 1 file changed, 47 insertions(+) create mode 100644 projects/projected_snowfall/comparison_with_scm/main_comparison_histo.py diff --git a/projects/projected_snowfall/comparison_with_scm/main_comparison_histo.py b/projects/projected_snowfall/comparison_with_scm/main_comparison_histo.py new file mode 100644 index 00000000..22515e11 --- /dev/null +++ b/projects/projected_snowfall/comparison_with_scm/main_comparison_histo.py @@ -0,0 +1,47 @@ +import numpy as np +import matplotlib +matplotlib.use('Agg') + +import matplotlib.pyplot as plt +from extreme_data.meteo_france_data.scm_models_data.safran.gap_between_study import GapBetweenSafranSnowfall2019And2020, \ + GapBetweenSafranSnowfall2019AndMySafranSnowfall2019Recentered, GapBetweenSafranSnowfall2019AndMySafranSnowfall2019 +from extreme_data.meteo_france_data.scm_models_data.visualization.main_study_visualizer import \ + STUDY_CLASS_TO_ABBREVIATION +from projects.altitude_spatial_model.altitudes_fit.altitudes_studies import AltitudesStudies + + +def comparison_plot(altitude_studies: AltitudesStudies, massif_name): + ax = plt.gca() + altitudes = [a for a, s in altitude_studies.altitude_to_study.items() if massif_name in s.study_massif_names] + annual_maxima = [altitude_studies.altitude_to_study[a].massif_name_to_annual_maxima[massif_name] for a in altitudes] + min_bias, mean_bias, max_bias = [[f(maxima) for maxima in annual_maxima] for f in [np.min, np.mean, np.max]] + + color = 'blue' + ax.plot(mean_bias, altitudes, label='Mean bias', color=color, marker='o') + ax.fill_betweenx(altitudes, min_bias, max_bias, label='Range for the bias', alpha=0.2, color=color) + ax.vlines(0, ymin=altitudes[0], ymax=altitudes[-1], color='k') + massif_name_str = massif_name.replace('_', '-') + study_str = STUDY_CLASS_TO_ABBREVIATION[type(altitude_studies.study)] + plot_name = '{} - Bias between of {}'.format(massif_name_str, study_str) + plot_name += '\nWe consider maxima between {} and {}'.format(altitude_studies.study.year_min, + altitude_studies.study.year_max) + ax.yaxis.set_ticks(altitudes) + ax.set_ylim(top=altitudes[-1] + 500) + ax.legend() + altitude_studies.show_or_save_to_file(plot_name=plot_name) + plt.close() + + +def main_comparaison_plot(): + altitudes = [600, 900, 1200, 1500, 1800, 2100, 2400, 2700, 3000, 3300, 3600] + for study_class in [GapBetweenSafranSnowfall2019AndMySafranSnowfall2019Recentered, + GapBetweenSafranSnowfall2019AndMySafranSnowfall2019, + GapBetweenSafranSnowfall2019And2020]: + altitude_studies = AltitudesStudies(study_class=study_class, + altitudes=altitudes) + for massif_name in altitude_studies.study.all_massif_names(): + comparison_plot(altitude_studies, massif_name) + + +if __name__ == '__main__': + main_comparaison_plot() -- GitLab