Commit e4bc0446 authored by Le Roux Erwan's avatar Le Roux Erwan
Browse files

[contrasting project] add plot_contrasting_trend_curves_massif

parent 1bdf3b0f
No related merge requests found
Showing with 73 additions and 7 deletions
+73 -7
......@@ -19,7 +19,8 @@ from extreme_data.meteo_france_data.scm_models_data.crocus.crocus import CrocusS
CrocusSnowLoad5Days, CrocusSnowLoad7Days, CrocusSnowLoad1Day
from extreme_fit.model.result_from_model_fit.result_from_extremes.confidence_interval_method import \
ConfidenceIntervalMethodFromExtremes
from projects.contrasting_trends_in_snow_loads.plot_contrasting_trend_curves import plot_contrasting_trend_curves
from projects.contrasting_trends_in_snow_loads.plot_contrasting_trend_curves import plot_contrasting_trend_curves, \
plot_contrasting_trend_curves_massif
from projects.exceeding_snow_loads.section_results.main_result_trends_and_return_levels import \
compute_minimized_aic
from root_utils import NB_CORES
......@@ -49,14 +50,16 @@ def intermediate_result(altitudes, massif_names=None,
# Compute minimized value efficiently
visualizers = list(altitude_to_visualizer.values())
if multiprocessing:
with Pool(NB_CORES) as p:
with Pool(4) as p:
_ = p.map(compute_minimized_aic, visualizers)
else:
for visualizer in visualizers:
_ = compute_minimized_aic(visualizer)
# Plots
plot_contrasting_trend_curves(altitude_to_visualizer, all_regions=True)
# plot_contrasting_trend_curves(altitude_to_visualizer, all_regions=True)
plot_contrasting_trend_curves_massif(altitude_to_visualizer, all_regions=True)
def major_result():
uncertainty_methods = [ConfidenceIntervalMethodFromExtremes.my_bayes,
......@@ -73,10 +76,11 @@ def major_result():
rainfall_classes = [SafranRainfall1Day, SafranRainfall3Days, SafranRainfall5Days, SafranRainfall7Days]
study_classes = precipitation_classes + snow_load_classes
# study_classes = snowfall_classes + rainfall_classes
for study_class in snowfall_classes:
for study_class in snowfall_classes[:1]:
intermediate_result(altitudes, massif_names, model_subsets_for_uncertainty,
uncertainty_methods, study_class, multiprocessing=True)
"""
est ce qu il y a une croissance signifcative en pluie,
......
......@@ -8,6 +8,67 @@ from extreme_trend.visualizers.study_visualizer_for_non_stationary_trends import
StudyVisualizerForNonStationaryTrends
def plot_contrasting_trend_curves_massif(altitude_to_visualizer: Dict[int, StudyVisualizerForNonStationaryTrends],
all_regions=False):
"""
Plot a single trend curves
:return:
"""
visualizers = list(altitude_to_visualizer.values())
visualizer = visualizers[0]
altitudes = list(altitude_to_visualizer.keys())
ax = create_adjusted_axes(1, 1)
# ax_twinx = ax.twinx()
ax_twinx = ax
ax_twiny = ax.twiny()
# parameters
width = 150
size = 20
legend_fontsize = 20
color = 'white'
labelsize = 15
linewidth = 3
for ax_horizontal in [ax, ax_twiny]:
if ax_horizontal == ax_twiny:
ax_horizontal.plot(altitudes, [0 for _ in altitudes], linewidth=0)
else:
ax_horizontal.set_xlabel('Altitude', fontsize=legend_fontsize)
ax_horizontal.set_xticks(altitudes)
# ax_horizontal.set_xlim([700, 5000])
ax_horizontal.tick_params(labelsize=labelsize)
# Set the number of massifs on the upper axis
ax_twiny.set_xticklabels([v.study.nb_study_massif_names for v in altitude_to_visualizer.values()])
ax_twiny.set_xlabel('Total number of massifs at each altitude (for the percentage)', fontsize=legend_fontsize)
ax_twinx.yaxis.grid()
ax_twinx.set_ylabel(visualizer.label, fontsize=legend_fontsize)
for j, massif_name in enumerate(visualizer.study.study_massif_names):
massif_visualizers = [v for v in visualizers if massif_name in v.massif_name_to_change_value]
changes = [v.massif_name_to_relative_change_value[massif_name] for v in massif_visualizers]
massif_altitudes = [v.study.altitude for v in massif_visualizers]
label = massif_name.replace('-', '').replace('_', '')
if j < 10:
linestyle = 'solid'
elif j < 20:
linestyle = 'dashed'
else:
linestyle = 'dotted'
ax_twinx.plot(massif_altitudes, changes, label=label, linewidth=linewidth, marker='o', linestyle=linestyle)
ax_twinx.legend(loc='upper right', prop={'size': 5})
ax.axhline(y=0, color='k')
# Save plot
visualizer.plot_name = 'Trend curves for' + visualizer.study.variable_name
visualizer.show_or_save_to_file(no_title=True, dpi=dpi_paper1_figure, folder_for_variable=False)
plt.close()
def plot_contrasting_trend_curves(altitude_to_visualizer: Dict[int, StudyVisualizerForNonStationaryTrends],
all_regions=False):
"""
......@@ -21,7 +82,7 @@ def plot_contrasting_trend_curves(altitude_to_visualizer: Dict[int, StudyVisuali
ax_twinx = ax
ax_twiny = ax.twiny()
trend_summary_values = list(zip(*[v.trend_summary_contrasting_values(all_regions=all_regions) for v in altitude_to_visualizer.values()]))
trend_summary_values = list(zip(*[v.trend_summary_contrasting_values(regions=all_regions) for v in altitude_to_visualizer.values()]))
altitudes, *mean_changes = trend_summary_values
# parameters
......
......@@ -69,7 +69,7 @@ def main_snow_load_maxima_partition(year_min, year_max):
rainfall_classes = [SafranRainfall1Day, SafranRainfall3Days, SafranRainfall5Days, SafranRainfall7Days]
snowfall_classes = [SafranSnowfall1Day, SafranSnowfall3Days, SafranSnowfall5Days, SafranSnowfall7Days]
snow_load_classes = [CrocusSnowLoad1Day, CrocusSnowLoad3Days, CrocusSnowLoad5Days, CrocusSnowLoad7Days]
classes = list(zip(rainfall_classes, snowfall_classes, snow_load_classes))[:1]
classes = list(zip(rainfall_classes, snowfall_classes, snow_load_classes))[1:2]
nb_top = 5
for study_classes in classes:
altitude_to_s = OrderedDict()
......@@ -85,8 +85,9 @@ def main_snow_load_maxima_partition(year_min, year_max):
# print(s)
altitude_to_s[altitude] = s
df_final = pd.DataFrame(altitude_to_s).transpose().round(2)
print(nb_top)
print(nb_top, year_min, year_max)
print(df_final)
print('\n\n')
if __name__ == '__main__':
......
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