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