From 6e832b515a3a6cf3ca212ff3e20675ba6f5adb67 Mon Sep 17 00:00:00 2001 From: Le Roux Erwan <erwan.le-roux@irstea.fr> Date: Wed, 26 Feb 2020 13:48:37 +0100 Subject: [PATCH] [paper 1] fix exceedance curve --- experiment/eurocode_data/eurocode_region.py | 5 +++++ .../main_result_trends_and_return_levels.py | 18 +++++++++--------- .../plot_uncertainty_curves.py | 11 ++++++++--- 3 files changed, 22 insertions(+), 12 deletions(-) diff --git a/experiment/eurocode_data/eurocode_region.py b/experiment/eurocode_data/eurocode_region.py index 479069f9..5d94b524 100644 --- a/experiment/eurocode_data/eurocode_region.py +++ b/experiment/eurocode_data/eurocode_region.py @@ -47,6 +47,11 @@ class AbstractEurocodeRegion(object): def plot_eurocode_snow_load_on_ground_characteristic_value_variable_action(self, ax, altitudes, label='French standards', linestyle=None): + # The breaking point must be exactly at 500 and 1000 + for threshold in [500, 1000]: + if min(altitudes) < threshold < max(altitudes): + assert threshold in altitudes + # Plot the curve ax.plot(altitudes, [self.valeur_caracteristique(altitude) for altitude in altitudes], label=label, color=self.eurocode_color, linewidth=5, linestyle=linestyle) diff --git a/papers/exceeding_snow_loads/result_trends_and_return_levels/main_result_trends_and_return_levels.py b/papers/exceeding_snow_loads/result_trends_and_return_levels/main_result_trends_and_return_levels.py index bd841735..3160bed2 100644 --- a/papers/exceeding_snow_loads/result_trends_and_return_levels/main_result_trends_and_return_levels.py +++ b/papers/exceeding_snow_loads/result_trends_and_return_levels/main_result_trends_and_return_levels.py @@ -66,12 +66,12 @@ def intermediate_result(altitudes, massif_names=None, _ = compute_minimized_aic(visualizer) # Plots - plot_trend_map(altitude_to_visualizer) + # plot_trend_map(altitude_to_visualizer) # plot_diagnosis_risk(altitude_to_visualizer) - plot_trend_curves(altitude_to_visualizer={a: v for a, v in altitude_to_visualizer.items() if a >= 900}) + # plot_trend_curves(altitude_to_visualizer={a: v for a, v in altitude_to_visualizer.items() if a >= 900}) plot_uncertainty_massifs(altitude_to_visualizer) - plot_uncertainty_histogram(altitude_to_visualizer) - plot_selection_curves(altitude_to_visualizer) + # plot_uncertainty_histogram(altitude_to_visualizer) + # plot_selection_curves(altitude_to_visualizer) def major_result(): @@ -91,11 +91,11 @@ def major_result(): if __name__ == '__main__': - major_result() - # intermediate_result(altitudes=[1500, 1800][:1], massif_names=None, - # uncertainty_methods=[ConfidenceIntervalMethodFromExtremes.my_bayes, - # ConfidenceIntervalMethodFromExtremes.ci_mle][1:], - # multiprocessing=True) + # major_result() + intermediate_result(altitudes=paper_altitudes, massif_names=['Beaufortain', 'Vercors'], + uncertainty_methods=[ConfidenceIntervalMethodFromExtremes.my_bayes, + ConfidenceIntervalMethodFromExtremes.ci_mle][1:], + multiprocessing=True) # intermediate_result(altitudes=[900, 1200], massif_names=['Maurienne'], # uncertainty_methods=[ConfidenceIntervalMethodFromExtremes.my_bayes, # ConfidenceIntervalMethodFromExtremes.ci_mle][1:], diff --git a/papers/exceeding_snow_loads/result_trends_and_return_levels/plot_uncertainty_curves.py b/papers/exceeding_snow_loads/result_trends_and_return_levels/plot_uncertainty_curves.py index 674c4f80..51a2646f 100644 --- a/papers/exceeding_snow_loads/result_trends_and_return_levels/plot_uncertainty_curves.py +++ b/papers/exceeding_snow_loads/result_trends_and_return_levels/plot_uncertainty_curves.py @@ -99,8 +99,9 @@ def plot_single_uncertainty_massif_and_non_stationary_context(ax, massif_name, m for j, uncertainty_method in enumerate(visualizer.uncertainty_methods): if j == 0: # Plot eurocode norm + altitudes_for_plot = list(range(min(altitudes), max(altitudes)+1, 100)) eurocode_region.plot_eurocode_snow_load_on_ground_characteristic_value_variable_action(ax, - altitudes=altitudes) + altitudes=altitudes_for_plot) # Plot uncertainties color = ci_method_to_color[uncertainty_method] @@ -162,8 +163,9 @@ def plot_tdrl_bars(altitude_to_visualizer, ax, massif_name, valid_altitudes, leg width=150, color=colors, label=visualizers[0].label_tdrl_bar, edgecolor='black', hatch='//') # Plot markers markers_kwargs = [v.massif_name_to_marker_style[massif_name] for v in visualizers] + markersize = 20 for k in markers_kwargs: - k['markersize'] = 10 + k['markersize'] = markersize for altitude, marker_kwargs, value in zip(valid_altitudes, markers_kwargs, tdrl_values): # ax.plot([altitude], [value / 2], **marker_kwargs) # Better to plot all the markers on the same line @@ -172,13 +174,16 @@ def plot_tdrl_bars(altitude_to_visualizer, ax, massif_name, valid_altitudes, leg visualizer = visualizers[0] markers = [v.massif_name_to_marker_style[massif_name]['marker'] for v in visualizers] marker_to_label = {m: visualizer.all_marker_style_to_label_name[m] for m in markers} - legend_elements = AbstractStudy.get_legend_for_model_symbol(marker_to_label, markersize=9) + legend_elements = AbstractStudy.get_legend_for_model_symbol(marker_to_label, markersize=markersize) ax2 = ax.twinx() # ax2.legend(handles=legend_elements, bbox_to_anchor=(0.93, 0.7), loc='upper right') # ax2.annotate("Filled symbol = significant trend ", xy=(0.85, 0.5), xycoords='axes fraction', fontsize=7) ax2.legend(handles=legend_elements, loc='center left', prop={'size': legend_size}) + # for handle in lgnd.legendHandles: + # handle.set_sizes([6.0]) # ax2.annotate("Filled symbol =\nsignificant trend \nw.r.t $\mathcal{M}_0$", xy=(0.6, 0.85), xycoords='axes fraction', fontsize=fontsize) ax2.annotate('\n'.join(filled_marker_legend_list), xy=(0.23, 0.43), xycoords='axes fraction', fontsize=fontsize) + ax2.annotate('Markers show selected model $\mathcal{M}_N$', xy=(0.02, 0.605), xycoords='axes fraction', fontsize=fontsize) ax2.set_yticks([]) -- GitLab