import geovizir as gvz
import pandas as pd
import matplotlib.pyplot as plt
Carte suisse
Exemple
Importer les librairies nécessaires
Pour créer votre carte, vous aurez besoin des librairies suivantes :
geovizir
pour récupérer les données géographiquespandas
pour lire les données et faire la mise en classematplotlib.pyplot
pour créer la carte
Récupérer les données
Lisez les données statistiques avec la fonction read_csv()
de pandas
. En fonction de vos données, vous devrez peut-être les mettre en forme.
= pd.read_csv('https://geoviews.link/PIB_2022') pib
En plus des données statistiques, vous aurez également besoin des données géographiques pour créer la carte. Pour cela, vous pouvez utiliser la fonction ne_countries()
de geovizir
.
= gvz.ne_states('CHE') swiss
Fusionner les données
Une fois que vous avez récupéré les données statistiques et géographiques, vous devez les fusionner pour créer la carte. Pour cela, vous réalisez une jointure entre les deux tableaux en utilisant une colonne commune. Dans le cas présent, les deux tableaux ont une colonne postal
qui contient l’abbréviation du canton.
= swiss.merge(pib, how='left', on='postal') plot_data
Mise en classe
Avant de créér la carte, vous devez mettre en classe les données statistiques. Pour cela, vous utiliser une des fonctions cut()
ou qcut()
de pandas
pour diviser les données en classes. Choisissez le nombre de classes que vous souhaitez créer et la méthode de mise en classe la plus indiquée en fonction de la distribution de vos données.
La fonction relabel_bins()
de geovizir
vous permet de renommer les classes créées pour qu’elles soient plus lisibles sur la carte.
'value_cat'] = pd.qcut(plot_data['PIB_hab'], 5)
plot_data['value_cat'] = gvz.relabel_bins(plot_data['value_cat']) plot_data[
Création de la carte
Une fois que vous avez mis en classe les données, vous pouvez créer la carte avec la fonction plot()
de matplotlib.pyplot
. Vous pouvez personnaliser la carte en ajoutant des titres, des légendes et d’autres éléments graphiques pour la rendre plus informative et attrayante.
Choisissez une palette de couleurs qui correspond à votre indicateur et qui est facilement lisible. Une liste des palettes est disponible dans la documentation de matplotlib
.
Les palette de couleurs viridis
, plasma
, inferno
, magma
et cividis
sont recommandées pour les cartes, car elles sont perceptuellement uniformes et conviennent à la plupart des types de données. Vous pouvez inverser la palette de couleurs en ajoutant _r
à la fin du nom de la palette (par exemple, viridis_r
).
= plt.subplots(1, 1, figsize=(10, 6))
fig, ax '#2b323f') # Couleur de fond de la carte
ax.set_facecolor('#2b323f') # Couleur de fond de l'image
fig.patch.set_facecolor(
map = plot_data.plot(
="value_cat", legend=True,
column# Choix de la palette de couleurs
='cividis_r',
cmap=ax,
ax=(10, 6),
figsize={
missing_kwds# Couleur utilisée pour les pays sans données
'color': 'lightgray',
# Légende pour les pays sans données
'label': 'Pas de données'
},={
legend_kwds# Emplacement de la légende
# Utilisez 'upper' ou 'lower' pour placer la légende en haut ou en bas
# et 'left' ou 'right' pour la placer à gauche ou à droite
'loc': 'upper left',
# Pour un placement plus précis de la légende
# vous pouvez utiliser bbox_to_anchor avec un paramètre x et y
#'bbox_to_anchor': (0.3, 0.4)
})
# Retirer les axes de coordonnées
map.set_axis_off()
# Ajouter un titre
map.set_title("PIB par habitant (2022)", color='#fffeea')
# Ajouter la source des données en bas à droite de la carte
plt.text(0.99, 0.01,
# Texte à afficher
'Source: OFS (2022)',
='right', va='bottom',
ha=map.transAxes,
transform=8,
fontsize# Couleur du texte
='#fffeea'
color
)
map