From 32ed5bef8efdf483499c2ad4d4b1bfee40e3d0cd Mon Sep 17 00:00:00 2001 From: Le Roux Erwan <erwan.le-roux@irstea.fr> Date: Fri, 5 Feb 2021 19:02:51 +0100 Subject: [PATCH] [contrasting] Final modifications for the plot for the v4 of the article --- .../altitudes_fit/main_altitudes_studies.py | 11 +-- ...es_visualizer_for_non_stationary_models.py | 15 ++-- .../one_fold_analysis/plot_total_aic.py | 2 +- .../plots/plot_histogram_altitude_studies.py | 76 +++++++++---------- 4 files changed, 53 insertions(+), 51 deletions(-) diff --git a/projects/altitude_spatial_model/altitudes_fit/main_altitudes_studies.py b/projects/altitude_spatial_model/altitudes_fit/main_altitudes_studies.py index c0199b7c..dae8f4eb 100644 --- a/projects/altitude_spatial_model/altitudes_fit/main_altitudes_studies.py +++ b/projects/altitude_spatial_model/altitudes_fit/main_altitudes_studies.py @@ -10,7 +10,7 @@ from extreme_data.meteo_france_data.scm_models_data.safran.safran_max_snowf impo SafranSnowfall2020 from projects.altitude_spatial_model.altitudes_fit.plots.plot_histogram_altitude_studies import \ plot_shoe_plot_changes_against_altitude, plot_histogram_all_trends_against_altitudes, \ - plot_shoe_plot_ratio_interval_size_against_altitude + plot_shoe_plot_ratio_interval_size_against_altitude, plot_histogram_all_models_against_altitudes from extreme_fit.model.result_from_model_fit.result_from_extremes.abstract_extract_eurocode_return_level import \ AbstractExtractEurocodeReturnLevel @@ -44,10 +44,10 @@ def main(): model_must_pass_the_test = False AbstractExtractEurocodeReturnLevel.ALPHA_CONFIDENCE_INTERVAL_UNCERTAINTY = 0.2 - fast = True + fast = False if fast is None: - massif_names = ['Vanoise'] - altitudes_list = altitudes_for_groups[:] + massif_names = None + altitudes_list = altitudes_for_groups[2:3] elif fast: AbstractExtractEurocodeReturnLevel.NB_BOOTSTRAP = 10 massif_names = ['Vanoise', 'Haute-Maurienne', 'Vercors'][:1] @@ -80,6 +80,7 @@ def main_loop(altitudes_list, massif_names, seasons, study_classes, model_must_p def plot_visualizers(massif_names, visualizer_list): + plot_histogram_all_models_against_altitudes(massif_names, visualizer_list) # plot_histogram_all_trends_against_altitudes(massif_names, visualizer_list) # plot_shoe_plot_ratio_interval_size_against_altitude(massif_names, visualizer_list) # for relative in [True, False]: @@ -95,7 +96,7 @@ def plot_visualizer(massif_names, visualizer): # visualizer.studies.plot_maxima_time_series(['Vanoise']) # Plot the results for the model that minimizes the individual aic - plot_individual_aic(visualizer) + # plot_individual_aic(visualizer) # Plot the results for the model that minimizes the total aic # plot_total_aic(model_classes, visualizer) diff --git a/projects/altitude_spatial_model/altitudes_fit/one_fold_analysis/altitudes_studies_visualizer_for_non_stationary_models.py b/projects/altitude_spatial_model/altitudes_fit/one_fold_analysis/altitudes_studies_visualizer_for_non_stationary_models.py index c5cb8818..2dafde17 100644 --- a/projects/altitude_spatial_model/altitudes_fit/one_fold_analysis/altitudes_studies_visualizer_for_non_stationary_models.py +++ b/projects/altitude_spatial_model/altitudes_fit/one_fold_analysis/altitudes_studies_visualizer_for_non_stationary_models.py @@ -517,13 +517,14 @@ class AltitudesStudiesVisualizerForNonStationaryModels(StudyVisualizer): coordinate_for_filter = (altitude, None) unconstrained_empirical_quantiles = one_fold_fit.best_estimator.sorted_empirical_standard_gumbel_quantiles(coordinate_for_filter=coordinate_for_filter) n = len(unconstrained_empirical_quantiles) - assert n == 61 - standard_gumbel_quantiles = one_fold_fit.standard_gumbel_quantiles(n=n) - ax.plot(standard_gumbel_quantiles, unconstrained_empirical_quantiles, linestyle='None', - label='{} m'.format(altitude), marker='o') - - all_quantiles.extend(standard_gumbel_quantiles) - all_quantiles.extend(unconstrained_empirical_quantiles) + if n > 0: + assert n == 61 + standard_gumbel_quantiles = one_fold_fit.standard_gumbel_quantiles(n=n) + ax.plot(standard_gumbel_quantiles, unconstrained_empirical_quantiles, linestyle='None', + label='{} m'.format(altitude), marker='o') + + all_quantiles.extend(standard_gumbel_quantiles) + all_quantiles.extend(unconstrained_empirical_quantiles) size_label = 20 ax.set_xlabel("Theoretical quantile", fontsize=size_label) diff --git a/projects/altitude_spatial_model/altitudes_fit/one_fold_analysis/plot_total_aic.py b/projects/altitude_spatial_model/altitudes_fit/one_fold_analysis/plot_total_aic.py index a8e3dffb..ad0fa2a4 100644 --- a/projects/altitude_spatial_model/altitudes_fit/one_fold_analysis/plot_total_aic.py +++ b/projects/altitude_spatial_model/altitudes_fit/one_fold_analysis/plot_total_aic.py @@ -14,7 +14,7 @@ from projects.exceeding_snow_loads.utils import dpi_paper1_figure def plots(visualizer: AltitudesStudiesVisualizerForNonStationaryModels): - # visualizer.plot_shape_map() + visualizer.plot_shape_map() # visualizer.plot_moments() visualizer.plot_qqplots() # for std in [True, False]: diff --git a/projects/altitude_spatial_model/altitudes_fit/plots/plot_histogram_altitude_studies.py b/projects/altitude_spatial_model/altitudes_fit/plots/plot_histogram_altitude_studies.py index f9501c7b..75c37793 100644 --- a/projects/altitude_spatial_model/altitudes_fit/plots/plot_histogram_altitude_studies.py +++ b/projects/altitude_spatial_model/altitudes_fit/plots/plot_histogram_altitude_studies.py @@ -40,44 +40,44 @@ def plot_histogram_all_models_against_altitudes(massif_names, visualizer_list: L print(model_name_to_mean_percentage[model_name], model_name_to_mean_percentage_significant[model_name], model_name) - # Plot part - ax = plt.gca() - width = 5 - size = 8 - legend_fontsize = 10 - labelsize = 10 - linewidth = 1 - tick_list = np.array([((len(visualizer_list) + 2) * i + (1 + len(visualizer_list) / 2)) * width - for i in range(len(sorted_model_names))]) - for tick_middle, model_name in zip(tick_list, sorted_model_names): - x_shifted = [tick_middle + width * shift / 2 for shift in range(-3, 5, 2)] - percentages = model_name_to_percentages[model_name] - percentages_significant = model_name_to_percentages_significant[model_name] - colors = ['white', 'yellow', 'orange', 'red'] - labels = ['{} m - {} m (\% out of {} massifs)'.format(1000 * i, 1000 * (i + 1), - len(v.get_valid_names(massif_names))) for i, v in - enumerate(visualizer_list)] - for x, color, percentage, label, percentage_significant in zip(x_shifted, colors, percentages, labels, - percentages_significant): - ax.bar([x], [percentage], width=width, label=label, - linewidth=2 * linewidth, edgecolor='black', color=color) - heights = list(range(0, math.ceil(percentage_significant), 1))[::-1] - for height in heights: - ax.bar([x], [height], width=width, linewidth=linewidth, edgecolor='black', color=color) - - handles, labels = ax.get_legend_handles_labels() - ax.legend(handles[:len(visualizer_list)], labels[:len(visualizer_list)], prop={'size': size}) - ax.set_xticklabels(sorted_model_names) - ax.set_xticks(tick_list) - ax.set_ylabel('Percentage of massifs (\%) ', fontsize=legend_fontsize) - ax.set_xlabel('Models', fontsize=legend_fontsize) - ax.set_ylim(bottom=0) - ax.yaxis.grid() - ax.tick_params(axis='both', which='major', labelsize=labelsize) - - visualizer.plot_name = 'All models' - visualizer.show_or_save_to_file(add_classic_title=False, no_title=True) - plt.close() + # # Plot part + # ax = plt.gca() + # width = 5 + # size = 8 + # legend_fontsize = 10 + # labelsize = 10 + # linewidth = 1 + # tick_list = np.array([((len(visualizer_list) + 2) * i + (1 + len(visualizer_list) / 2)) * width + # for i in range(len(sorted_model_names))]) + # for tick_middle, model_name in zip(tick_list, sorted_model_names): + # x_shifted = [tick_middle + width * shift / 2 for shift in range(-3, 5, 2)] + # percentages = model_name_to_percentages[model_name] + # percentages_significant = model_name_to_percentages_significant[model_name] + # colors = ['white', 'yellow', 'orange', 'red'] + # labels = ['{} m - {} m (\% out of {} massifs)'.format(1000 * i, 1000 * (i + 1), + # len(v.get_valid_names(massif_names))) for i, v in + # enumerate(visualizer_list)] + # for x, color, percentage, label, percentage_significant in zip(x_shifted, colors, percentages, labels, + # percentages_significant): + # ax.bar([x], [percentage], width=width, label=label, + # linewidth=2 * linewidth, edgecolor='black', color=color) + # heights = list(range(0, math.ceil(percentage_significant), 1))[::-1] + # for height in heights: + # ax.bar([x], [height], width=width, linewidth=linewidth, edgecolor='black', color=color) + # + # handles, labels = ax.get_legend_handles_labels() + # ax.legend(handles[:len(visualizer_list)], labels[:len(visualizer_list)], prop={'size': size}) + # ax.set_xticklabels(sorted_model_names) + # ax.set_xticks(tick_list) + # ax.set_ylabel('Percentage of massifs (\%) ', fontsize=legend_fontsize) + # ax.set_xlabel('Models', fontsize=legend_fontsize) + # ax.set_ylim(bottom=0) + # ax.yaxis.grid() + # ax.tick_params(axis='both', which='major', labelsize=labelsize) + # + # visualizer.plot_name = 'All models' + # visualizer.show_or_save_to_file(add_classic_title=False, no_title=True) + # plt.close() def plot_histogram_all_trends_against_altitudes(massif_names, visualizer_list: List[ -- GitLab