évolution annuelle des restrictions d’eau
Contenu encore en cours d’écriture et de peaufinage. Je suis débutant en cartographie et en geopandas, il y a certainment moyen d’optimiser le code. Je compte également apporter plus de nuance à la visualisation finale.
résumé
Comment les politiques publiques s’emparent des problématiques de la crise climatiques avec des restrictions d’eau ?
Les données utilisées proviennent du scrapping effectué par Christian Quest du site propluvia. Elles concernent allant du 01.01.2010
au 06.08.2022
. Pour une première approche, il y a cette analyse exploratoire qui permettra d’avoir un avant goût des données.
préparation des données
propluvia = (
pd
.read_csv('https://raw.githubusercontent.com/taniki/propluvia/main/propluvia.csv')
.assign(
Date_debut = lambda d: pd.to_datetime(d.Date_debut, errors='coerce'),
Date_fin = lambda d: pd.to_datetime(d.Date_fin, errors='coerce'),
NIVEAU= lambda d: d.NIVEAU.astype('category'),
Region= lambda d: d.Region.astype('category'),
Departement= lambda d: d.Departement.astype('category'),
)
.drop_duplicates()
)
propluvia
préparation du fond de carte
https://github.com/gregoiredavid/france-geojson
carte en fonction de l’année et du niveau d’alerte
def single(year, level, ax_):
departements.plot(
color='white',
edgecolor='#ddd',
linewidth=0.4,
ax=ax_
)
ax = (
propluvia
.query('Date_debut.dt.year == @year or Date_fin.dt.year == @year')
.query('NIVEAU == @level')
.set_index('Code_ZA')
.join(zones)
.query('not codeDep.isin(@zones_exclude)')
.pipe(lambda df: gpd.GeoDataFrame(df) )
.plot(
color=niveaux[level],
ax=ax_
)
)
ax.set_axis_off()
# ax.xaxis.set_visible(False)
# plt.setp(axes[1,0].spines.values(), visible=False)
return ax
annees = propluvia.Date_debut.dt.year.dropna().unique()
#[ single(int(y), n) for y in annees for n in list(niveaux.keys()) ]
#[ single(2022, n) for n in list(niveaux.keys()) ]
fig, ax = plt.subplots()
single(2022, 'Crise', ax)
plt.show()
carte des territoires concernés par une arrêté par année
annees_ = [2022, 2018, 2016, 2014, 2012]
#annees_ = [2022, 2019]
pad = 5
fig, ax = plt.subplots(len(annees_), len(niveaux), figsize=(len(niveaux)*4, len(annees_)*4), sharex='all', sharey='all')
for i,y in enumerate(annees_):
for j,n in enumerate(list(niveaux.keys())):
single(y, n, ax[i,j])
for c,n in enumerate(niveaux):
ax[0,c].set_title(n)
for r,y in enumerate(annees_):
ax[r,0].annotate(
y,
xy=(0, 0.5),
xytext=(-ax[r,0].yaxis.labelpad-pad,0),
xycoords=ax[r,0].yaxis.label,
textcoords='offset points',
size='large',
ha='right',
va='center'
)
plt.tight_layout()
fig.subplots_adjust(left=0.18, top=0.95)
plt.savefig('graphics/propluvia-carte-sample.png', facecolor='white', transparent=False)