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,plotlyet kaleido - Sinon, vous pouvez l’installer via l’invite de commande :
C:\OSGeo4W\OSGeo4W.bat > python3 -m pip install pandas plotlykaleido
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.