Commit 0003ba48 authored by Le Roux Erwan's avatar Le Roux Erwan
Browse files

[slides] final plots for the slide "climat and avalanche"

parent 77969f35
No related merge requests found
Showing with 19 additions and 12 deletions
+19 -12
import matplotlib.pyplot as plt import matplotlib.pyplot as plt
from extreme_data.meteo_france_data.scm_models_data.crocus.crocus import CrocusSnowLoadTotal, CrocusDepth from extreme_data.meteo_france_data.scm_models_data.crocus.crocus import CrocusSnowLoadTotal, CrocusDepth
from extreme_data.meteo_france_data.scm_models_data.crocus.crocus_variables import AbstractSnowLoadVariable from extreme_data.meteo_france_data.scm_models_data.crocus.crocus_variables import AbstractSnowLoadVariable
from extreme_data.meteo_france_data.scm_models_data.safran.safran import SafranSnowfall1Day
ax = plt.gca() ax = plt.gca()
fontsize = 20 fontsize = 20
altitude = 1800 altitude = 1800
studies = [CrocusSnowLoadTotal(altitude=altitude), CrocusDepth(altitude=altitude)] # studies = [CrocusSnowLoadTotal(altitude=altitude), CrocusDepth(altitude=altitude)]
studies = [SafranSnowfall1Day(altitude=altitude), CrocusDepth(altitude=altitude)]
colors = ['black', 'grey'] colors = ['black', 'grey']
for i, study in enumerate(studies): for i, study in enumerate(studies):
color = colors[i] color = colors[i]
...@@ -18,7 +20,10 @@ for i, study in enumerate(studies): ...@@ -18,7 +20,10 @@ for i, study in enumerate(studies):
days = [d[5:] for d in study.year_to_days[year]] days = [d[5:] for d in study.year_to_days[year]]
x = list(range(len(days))) x = list(range(len(days)))
if i == 0: if i == 0:
ylabel = 'ground snow load ({})'.format(AbstractSnowLoadVariable.UNIT) if isinstance(study, SafranSnowfall1Day):
ylabel = 'snowfall (mm)'
else:
ylabel = 'ground snow load ({})'.format(AbstractSnowLoadVariable.UNIT)
else: else:
ylabel = 'snow depth (m)' ylabel = 'snow depth (m)'
ax.set_ylabel(ylabel, fontsize=fontsize) ax.set_ylabel(ylabel, fontsize=fontsize)
......
...@@ -13,7 +13,7 @@ def tuples_for_examples_paper1(examples_for_the_paper=True): ...@@ -13,7 +13,7 @@ def tuples_for_examples_paper1(examples_for_the_paper=True):
marker_altitude_massif_name_for_paper1 = [ marker_altitude_massif_name_for_paper1 = [
# ('magenta', 900, 'Ubaye'), # ('magenta', 900, 'Ubaye'),
('darkblue', 1800, 'Vercors'), ('darkblue', 900, 'Chartreuse'),
# ('mediumpurple', 2700, 'Beaufortain'), # ('mediumpurple', 2700, 'Beaufortain'),
] ]
else: else:
......
...@@ -33,28 +33,30 @@ def histogram_for_gev(): ...@@ -33,28 +33,30 @@ def histogram_for_gev():
from extreme_data.meteo_france_data.scm_models_data.crocus.crocus import CrocusDepth from extreme_data.meteo_france_data.scm_models_data.crocus.crocus import CrocusDepth
ax = plt.gca() ax = plt.gca()
study_class = CrocusDepth study_class = CrocusDepth
study = study_class(altitude=1800) study = study_class(altitude=900)
s = study.observations_annual_maxima.df_maxima_gev.loc['Vercors'] s = study.observations_annual_maxima.df_maxima_gev.loc['Chartreuse']
x_gev = s.values x_gev = s.values
gev_params = fitted_stationary_gev(x_gev) gev_params = fitted_stationary_gev(x_gev)
print(gev_params.return_level(return_period=50)) print(gev_params.return_level(return_period=50))
samples = gev_params.sample(10000) samples = gev_params.sample(10000)
nb = 10 nb = 12
epsilon = 0.0 epsilon = 0.0
x, bins, p = ax.hist(samples, bins=nb, color='white', edgecolor='grey', density=True, stacked=True, x, bins, p = ax.hist(samples, bins=[0.25 * i for i in range(10)],
linewidth=3, bottom=[-epsilon for _ in range(nb)]) color='white', edgecolor='grey', density=True, stacked=True,
linewidth=3)
for item in p: for item in p:
item.set_height((item.get_height() / sum(x))) item.set_height((item.get_height() / sum(x)))
# print(gev_params) print(gev_params)
# x = np.linspace(0.0, 10, 1000) # x = np.linspace(0.0, 10, 1000)
# y = gev_params.density(x) # y = gev_params.density(x)
# ax.plot(x, y, linewidth=5) # ax.plot(x, y, linewidth=5)
ax.set_xlabel('Annual maximum of snow depth (m)', fontsize=15) ax.set_xlabel('Annual maximum of snow depth (m)', fontsize=15)
ax.set_ylabel('Probability', fontsize=15) ax.set_ylabel('Probability', fontsize=15)
ax.tick_params(axis='both', which='major', labelsize=15) ax.tick_params(axis='both', which='major', labelsize=15)
ax.set_yticks([0, 0.1, 0.2, 0.3]) ax.set_yticks([0.1 * j for j in range(4)])
ax.set_xlim([0, 2.5]) ax.set_xticks([0.5 * j for j in range(5)])
ax.set_ylim([0, 0.3]) ax.set_xlim([0, 2])
ax.set_ylim([0, 0.36])
def histogram_for_normal(): def histogram_for_normal():
......
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