From d5e44fb6f4475d540ca6dae70897aa51d3277d28 Mon Sep 17 00:00:00 2001 From: Le Roux Erwan <erwan.le-roux@irstea.fr> Date: Thu, 21 Nov 2019 17:46:55 +0100 Subject: [PATCH] add eurocode plot for the paper 1 --- experiment/eurocode_data/eurocode_drawing.py | 0 experiment/eurocode_data/eurocode_region.py | 25 ++++++++++-- experiment/eurocode_data/slide_plot.py | 18 --------- .../data/main_eurocode_plot.py | 38 +++++++++++++++++++ 4 files changed, 59 insertions(+), 22 deletions(-) delete mode 100644 experiment/eurocode_data/eurocode_drawing.py delete mode 100644 experiment/eurocode_data/slide_plot.py diff --git a/experiment/eurocode_data/eurocode_drawing.py b/experiment/eurocode_data/eurocode_drawing.py deleted file mode 100644 index e69de29b..00000000 diff --git a/experiment/eurocode_data/eurocode_region.py b/experiment/eurocode_data/eurocode_region.py index 37c5c95e..7dfdeb5f 100644 --- a/experiment/eurocode_data/eurocode_region.py +++ b/experiment/eurocode_data/eurocode_region.py @@ -1,4 +1,5 @@ from experiment.eurocode_data.utils import LAST_YEAR_FOR_EUROCODE +from root_utils import classproperty class AbstractEurocodeRegion(object): @@ -43,11 +44,13 @@ class AbstractEurocodeRegion(object): def lois_de_variation_1000_and_2000(self): return 3.5, -2.45 - def plot_max_loading(self, ax, altitudes): - # old_label = 'Eurocode computed in {}'.format(LAST_YEAR_FOR_EUROCODE) - new_label = 'Eurocode standards' + def plot_max_loading(self, ax, altitudes, label='Eurocode standards'): ax.plot(altitudes, [self.eurocode_max_loading(altitude) for altitude in altitudes], - label=new_label, color='k') + label=label, color=self.eurocode_color, linewidth=5) + + @classproperty + def eurocode_color(self): + raise NotImplementedError class C1(AbstractEurocodeRegion): @@ -55,12 +58,20 @@ class C1(AbstractEurocodeRegion): def __init__(self) -> None: super().__init__(0.65, None) + @classproperty + def eurocode_color(self): + return 'gold' + class C2(AbstractEurocodeRegion): def __init__(self) -> None: super().__init__(0.65, 1.35) + @classproperty + def eurocode_color(self): + return 'orange' + class E(AbstractEurocodeRegion): @@ -78,3 +89,9 @@ class E(AbstractEurocodeRegion): @property def lois_de_variation_1000_and_2000(self): return 7, -4.80 + + @classproperty + def eurocode_color(self): + return 'mediumvioletred' + + diff --git a/experiment/eurocode_data/slide_plot.py b/experiment/eurocode_data/slide_plot.py deleted file mode 100644 index e46e0f2f..00000000 --- a/experiment/eurocode_data/slide_plot.py +++ /dev/null @@ -1,18 +0,0 @@ -import matplotlib.pyplot as plt -import numpy as np - -from experiment.eurocode_data.eurocode_region import C2, E -from root_utils import get_display_name_from_object_type - -if __name__ == '__main__': - ax = plt.gca() - altitudes = np.linspace(200, 2000) - for region_class in [C2, E][1:]: - region_object = region_class() - region_object.plot_max_loading(ax, altitudes) - # ax.set_title(get_display_name_from_object_type(region_object) + ' Eurocodes region') - ax.set_ylabel('50-year return level (kN $m^-2$)') - ax.set_xlabel('Altitude (m)') - ax.set_ylim([0.0, 11.0]) - ax.grid() - plt.show() \ No newline at end of file diff --git a/experiment/paper_past_snow_loads/data/main_eurocode_plot.py b/experiment/paper_past_snow_loads/data/main_eurocode_plot.py index e69de29b..4cd94ebf 100644 --- a/experiment/paper_past_snow_loads/data/main_eurocode_plot.py +++ b/experiment/paper_past_snow_loads/data/main_eurocode_plot.py @@ -0,0 +1,38 @@ +import matplotlib.pyplot as plt +import numpy as np + +from experiment.eurocode_data.eurocode_region import C2, E, C1 +from experiment.eurocode_data.massif_name_to_departement import massif_name_to_eurocode_region +from experiment.meteo_france_data.scm_models_data.abstract_study import AbstractStudy +from root_utils import get_display_name_from_object_type + + +def main_eurocode_norms(ax=None): + if ax is None: + ax = plt.gca() + altitudes = np.linspace(200, 2000) + for region_class in [C1, C2, E][:]: + region_object = region_class() + label = get_display_name_from_object_type(region_class) + ' Eurocode region' + region_object.plot_max_loading(ax, altitudes, label=label) + if region_class == E: + ax.legend() + ax.xaxis.set_ticks([250 * i for i in range(1, 9)]) + ax.tick_params(axis='both', which='major', labelsize=13) + ax.set_ylabel('50-year return level (kN $m^-2$)') + ax.set_xlabel('Altitude (m)') + ax.set_ylim([0.0, 11.0]) + ax.grid() + plt.show() + + +def main_eurocode_map(ax=None): + if ax is None: + ax = plt.gca() + massif_name_to_color = {m: r.eurocode_color for m, r in massif_name_to_eurocode_region.items()} + AbstractStudy.visualize_study(ax, massif_name_to_color=massif_name_to_color, scaled=True) + + +if __name__ == '__main__': + # main_eurocode_norms() + main_eurocode_map() -- GitLab