From 22e10d5df802cf5defaa4456147d844cc5d85dd5 Mon Sep 17 00:00:00 2001 From: Le Roux Erwan <erwan.le-roux@irstea.fr> Date: Wed, 17 Jul 2019 14:14:15 +0200 Subject: [PATCH] [STRENGTH EVOLUTION] improve display of the text in strength display --- .../scm_models_data/abstract_study.py | 3 ++- .../abstract_hypercube_visualizer.py | 4 +++- .../altitude_hypercube_visualizer.py | 18 +++++++++++------- .../main3_non_stationary_strength_evolution.py | 4 ++-- 4 files changed, 18 insertions(+), 11 deletions(-) diff --git a/experiment/meteo_france_data/scm_models_data/abstract_study.py b/experiment/meteo_france_data/scm_models_data/abstract_study.py index 4232785c..7c85b8d6 100644 --- a/experiment/meteo_france_data/scm_models_data/abstract_study.py +++ b/experiment/meteo_france_data/scm_models_data/abstract_study.py @@ -233,6 +233,7 @@ class AbstractStudy(object): massif_name_to_color=None, show_label=True, scaled=False, + fontsize=7, ): if ax is None: ax = plt.gca() @@ -300,7 +301,7 @@ class AbstractStudy(object): massif_name = row.name value = massif_name_to_value[massif_name] str_value = str(value) - ax.text(x, y, str_value, horizontalalignment='center', verticalalignment='center', fontsize=7) + ax.text(x, y, str_value, horizontalalignment='center', verticalalignment='center', fontsize=fontsize) if scaled: plt.axis('scaled') diff --git a/experiment/meteo_france_data/scm_models_data/visualization/hypercube_visualization/abstract_hypercube_visualizer.py b/experiment/meteo_france_data/scm_models_data/visualization/hypercube_visualization/abstract_hypercube_visualizer.py index c516794e..8bd9527e 100644 --- a/experiment/meteo_france_data/scm_models_data/visualization/hypercube_visualization/abstract_hypercube_visualizer.py +++ b/experiment/meteo_france_data/scm_models_data/visualization/hypercube_visualization/abstract_hypercube_visualizer.py @@ -105,7 +105,7 @@ class AbstractHypercubeVisualizer(object): def study_title(self): return self.study.title - def show_or_save_to_file(self, specific_title='', tight=False): + def show_or_save_to_file(self, specific_title='', tight=False, dpi=None): if self.save_to_file: main_title, *_ = '_'.join(self.study_title.split()).split('/') filename = "{}/{}/".format(VERSION_TIME, main_title) @@ -116,6 +116,8 @@ class AbstractHypercubeVisualizer(object): os.makedirs(dirname, exist_ok=True) if tight: plt.savefig(filepath, bbox_inches='tight', pad_inches=-0.03, dpi=1000) + elif dpi is not None: + plt.savefig(filepath, dpi=dpi) else: plt.savefig(filepath) else: diff --git a/experiment/meteo_france_data/scm_models_data/visualization/hypercube_visualization/altitude_hypercube_visualizer.py b/experiment/meteo_france_data/scm_models_data/visualization/hypercube_visualization/altitude_hypercube_visualizer.py index 33b76a75..df073708 100644 --- a/experiment/meteo_france_data/scm_models_data/visualization/hypercube_visualization/altitude_hypercube_visualizer.py +++ b/experiment/meteo_france_data/scm_models_data/visualization/hypercube_visualization/altitude_hypercube_visualizer.py @@ -12,6 +12,7 @@ from experiment.meteo_france_data.scm_models_data.visualization.study_visualizat from experiment.trend_analysis.univariate_test.abstract_gev_change_point_test import AbstractGevChangePointTest from experiment.trend_analysis.univariate_test.abstract_univariate_test import AbstractUnivariateTest from extreme_estimator.margin_fits.gev.gev_params import GevParams +from utils import get_display_name_from_object_type ALTITUDES_XLABEL = 'altitudes' @@ -315,7 +316,7 @@ class AltitudeHypercubeVisualizer(AbstractHypercubeVisualizer): massif_to_year.update(massif_to_value_for_trend_type) # Compute massif_to_value if self.reduce_strength_array: - massif_name_to_value = {m: "{} {}{} / {} year(s)".format( + massif_name_to_value = {m: "{} {}{}".format( int(massif_to_constant[m]), "+" if massif_to_strength[m] > 0 else "", round(massif_to_strength[m] * massif_to_constant[m], 1), @@ -325,21 +326,24 @@ class AltitudeHypercubeVisualizer(AbstractHypercubeVisualizer): massif_name_to_value = massif_to_year self.study.visualize_study(None, massif_name_to_color=massif_to_color, show=False, show_label=False, scaled=True, add_text=add_text, - massif_name_to_value=massif_name_to_value) + massif_name_to_value=massif_name_to_value, + fontsize=4) - title = self.set_trend_test_reparition_title(subtitle, set=False) + title = self.set_trend_test_reparition_title(subtitle, set=True) - # row_title = self.get_title_plot(xlabel='massifs', ax_idx=i) - # StudyVisualizer.clean_axes_write_title_on_the_left(axes_row, row_title, left_border=None) return title def set_trend_test_reparition_title(self, subtitle, set=True): # Global information title = 'Repartition of {} trends'.format(subtitle) - title += ' at altitude={}m for the starting_year={}'.format(self.altitudes[0], self.first_starting_year) + title += ' at altitude={}m \nfor the starting_year={}'.format(self.altitudes[0], self.first_starting_year) if len(self.starting_years) > 1: title += ' until starting_year={}'.format(self.last_starting_year) + title += ' with {} test'.format(get_display_name_from_object_type(self.trend_test_class)) + if self.reduce_strength_array: + title += '\nEvolution of the quantile {} every {} years'.format(AbstractGevChangePointTest.quantile_for_strength, + AbstractGevChangePointTest.nb_years_for_quantile_evolution) if set: plt.suptitle(title) return title @@ -457,6 +461,6 @@ class AltitudeHypercubeVisualizer(AbstractHypercubeVisualizer): isin_parameters=isin_parameters, plot_title=plot_title) if show_or_save_to_file: - self.show_or_save_to_file(specific_title=last_title, tight=True) + self.show_or_save_to_file(specific_title=last_title, dpi=1000) return last_title diff --git a/experiment/paper1_steps/hard extreme evolution - annual maxima/main3_non_stationary_strength_evolution.py b/experiment/paper1_steps/hard extreme evolution - annual maxima/main3_non_stationary_strength_evolution.py index 4cbedf1e..790b9203 100644 --- a/experiment/paper1_steps/hard extreme evolution - annual maxima/main3_non_stationary_strength_evolution.py +++ b/experiment/paper1_steps/hard extreme evolution - annual maxima/main3_non_stationary_strength_evolution.py @@ -16,13 +16,13 @@ def main_fast_spatial_risk_evolution(): vizualiser = get_full_altitude_visualizer(Altitude_Hypercube_Year_Visualizer, altitude=altitude, exact_starting_year=1958, reduce_strength_array=True, trend_test_class=GevScaleChangePointTest) - vizualiser.save_to_file = False + # vizualiser.save_to_file = False vizualiser.visualize_massif_trend_test_one_altitude() def main_full_spatial_risk_evolution(): for altitude in FULL_ALTITUDES[:]: - for trend_test_class in [GevLocationChangePointTest, GevScaleChangePointTest][1:]: + for trend_test_class in [GevLocationChangePointTest, GevScaleChangePointTest][:]: vizualiser = get_full_altitude_visualizer(Altitude_Hypercube_Year_Visualizer, altitude=altitude, exact_starting_year=1958, reduce_strength_array=True, trend_test_class=trend_test_class) -- GitLab