Dans nos précédents articles, nous avons vu comment créer des graphiques dans QGIS avec Data Plotly. Aujourd’hui, nous allons aller plus loin : automatiser la génération d’un graphique par plage (ou toute autre entité), en exportant les résultats sous forme d’images PNG, prêtes à insérer dans un rapport.
Et bonne nouvelle : pas besoin de coder un plugin, nous allons utiliser la console Python de QGIS, avec pandas
et plotly
.
Objectif
Créer automatiquement :
- Un graphique par plage, montrant la quantité de déchets par type
- Un fichier image PNG par graphique
- Sans clics répétés ni manipulation manuelle
Exemple utilisé
Nous avons une couche de relevés de déchets sur les plages, avec les champs :
plage
: nom de la plagetype_dechet
: type (plastique, métal…)quantite
: nombre d’objets relevés

Le script Python dans QGIS
Voici un script que vous pouvez copier dans la console Python de QGIS :
import os
import pandas as pd
import plotly.express as px
# Dossier de sortie
output_folder = "C:/temp/export_graphiques"
os.makedirs(output_folder, exist_ok=True)
# Couche active
layer = iface.activeLayer()
# Extraction des données
data = []
for f in layer.getFeatures():
data.append({
"plage": f["plage"],
"type_dechet": f["type_dechet"],
"quantite": f["quantite"]
})
# Convertir en DataFrame
df = pd.DataFrame(data)
# Générer un graphique par plage
for plage, group in df.groupby("plage"):
fig = px.bar(
group,
x="type_dechet",
y="quantite",
title=f"Déchets par type – {plage}",
labels={"quantite": "Quantité", "type_dechet": "Type de déchet"},
color="type_dechet"
)
fig.update_layout(showlegend=False)
fig.write_image(os.path.join(output_folder, f"graph_{plage}.png"))
print("✅ Graphiques exportés dans :", output_folder)
Prérequis
Pour que le script fonctionne, vérifiez que :
- Votre environnement Python de QGIS contient
pandas
,plotly
et kaleido - Sinon, vous pouvez l’installer via l’invite de commande :
C:\OSGeo4W\OSGeo4W.bat > python3 -m pip install pandas plotly
kaleido
Personnalisation
Vous pouvez modifier :
- Le champ de regroupement (
"plage"
) pour faire des graphiques par commune, par date, etc. - Le type de graphique : utilisez
px.pie
,px.line
,px.histogram
…
Résultat attendu
Dans votre dossier, vous obtiendrez :
graph_Anse_Mourouk.png
graph_Pointe_Coton.png
graph_Graviers.png
...

Chaque image correspond à une plage, avec un graphique clair et prêt à être inséré dans un rapport ou un atlas.
Si vous modifiez le code pour produire des camemberts:
import plotly.express as px
import os
for plage, group in df.groupby("plage"):
fig = px.pie(
group,
names="type_dechet", # valeurs catégorielles
values="quantite", # valeurs quantitatives
title=f"Répartition des déchets – {plage}",
color="type_dechet"
)
fig.update_traces(textposition='inside', textinfo='percent+label')
fig.write_image(os.path.join(output_folder, f"graph_{plage}.png"))
Vous obtenez:

En résumé
Même si Data Plotly est pratique pour créer des graphiques dans QGIS, il n’est pas scriptable en Python. En revanche, en extrayant les données et en utilisant plotly
, vous bénéficiez :
- d’un contrôle total,
- d’un script réutilisable,
- de visuels professionnels.
À venir…
Dans un prochain article, nous verrons comment intégrer automatiquement ces graphiques dans un Atlas QGIS, pour créer des rapports PDF entièrement personnalisés.