Commit 6e832b51 authored by Le Roux Erwan's avatar Le Roux Erwan
Browse files

[paper 1] fix exceedance curve

parent 3594c688
No related merge requests found
Showing with 22 additions and 12 deletions
+22 -12
...@@ -47,6 +47,11 @@ class AbstractEurocodeRegion(object): ...@@ -47,6 +47,11 @@ class AbstractEurocodeRegion(object):
def plot_eurocode_snow_load_on_ground_characteristic_value_variable_action(self, ax, altitudes, def plot_eurocode_snow_load_on_ground_characteristic_value_variable_action(self, ax, altitudes,
label='French standards', label='French standards',
linestyle=None): 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], ax.plot(altitudes, [self.valeur_caracteristique(altitude) for altitude in altitudes],
label=label, color=self.eurocode_color, linewidth=5, linestyle=linestyle) label=label, color=self.eurocode_color, linewidth=5, linestyle=linestyle)
......
...@@ -66,12 +66,12 @@ def intermediate_result(altitudes, massif_names=None, ...@@ -66,12 +66,12 @@ def intermediate_result(altitudes, massif_names=None,
_ = compute_minimized_aic(visualizer) _ = compute_minimized_aic(visualizer)
# Plots # Plots
plot_trend_map(altitude_to_visualizer) # plot_trend_map(altitude_to_visualizer)
# plot_diagnosis_risk(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_massifs(altitude_to_visualizer)
plot_uncertainty_histogram(altitude_to_visualizer) # plot_uncertainty_histogram(altitude_to_visualizer)
plot_selection_curves(altitude_to_visualizer) # plot_selection_curves(altitude_to_visualizer)
def major_result(): def major_result():
...@@ -91,11 +91,11 @@ def major_result(): ...@@ -91,11 +91,11 @@ def major_result():
if __name__ == '__main__': if __name__ == '__main__':
major_result() # major_result()
# intermediate_result(altitudes=[1500, 1800][:1], massif_names=None, intermediate_result(altitudes=paper_altitudes, massif_names=['Beaufortain', 'Vercors'],
# uncertainty_methods=[ConfidenceIntervalMethodFromExtremes.my_bayes, uncertainty_methods=[ConfidenceIntervalMethodFromExtremes.my_bayes,
# ConfidenceIntervalMethodFromExtremes.ci_mle][1:], ConfidenceIntervalMethodFromExtremes.ci_mle][1:],
# multiprocessing=True) multiprocessing=True)
# intermediate_result(altitudes=[900, 1200], massif_names=['Maurienne'], # intermediate_result(altitudes=[900, 1200], massif_names=['Maurienne'],
# uncertainty_methods=[ConfidenceIntervalMethodFromExtremes.my_bayes, # uncertainty_methods=[ConfidenceIntervalMethodFromExtremes.my_bayes,
# ConfidenceIntervalMethodFromExtremes.ci_mle][1:], # ConfidenceIntervalMethodFromExtremes.ci_mle][1:],
......
...@@ -99,8 +99,9 @@ def plot_single_uncertainty_massif_and_non_stationary_context(ax, massif_name, m ...@@ -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): for j, uncertainty_method in enumerate(visualizer.uncertainty_methods):
if j == 0: if j == 0:
# Plot eurocode norm # 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, eurocode_region.plot_eurocode_snow_load_on_ground_characteristic_value_variable_action(ax,
altitudes=altitudes) altitudes=altitudes_for_plot)
# Plot uncertainties # Plot uncertainties
color = ci_method_to_color[uncertainty_method] color = ci_method_to_color[uncertainty_method]
...@@ -162,8 +163,9 @@ def plot_tdrl_bars(altitude_to_visualizer, ax, massif_name, valid_altitudes, leg ...@@ -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='//') width=150, color=colors, label=visualizers[0].label_tdrl_bar, edgecolor='black', hatch='//')
# Plot markers # Plot markers
markers_kwargs = [v.massif_name_to_marker_style[massif_name] for v in visualizers] markers_kwargs = [v.massif_name_to_marker_style[massif_name] for v in visualizers]
markersize = 20
for k in markers_kwargs: for k in markers_kwargs:
k['markersize'] = 10 k['markersize'] = markersize
for altitude, marker_kwargs, value in zip(valid_altitudes, markers_kwargs, tdrl_values): for altitude, marker_kwargs, value in zip(valid_altitudes, markers_kwargs, tdrl_values):
# ax.plot([altitude], [value / 2], **marker_kwargs) # ax.plot([altitude], [value / 2], **marker_kwargs)
# Better to plot all the markers on the same line # 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 ...@@ -172,13 +174,16 @@ def plot_tdrl_bars(altitude_to_visualizer, ax, massif_name, valid_altitudes, leg
visualizer = visualizers[0] visualizer = visualizers[0]
markers = [v.massif_name_to_marker_style[massif_name]['marker'] for v in visualizers] 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} 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 = ax.twinx()
# ax2.legend(handles=legend_elements, bbox_to_anchor=(0.93, 0.7), loc='upper right') # 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.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}) 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("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('\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([]) ax2.set_yticks([])
......
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment