En nuestros artículos anteriores, vimos cómo crear gráficos en QGIS utilizando Data Plotly. Hoy, vamos a ir un paso más allá: automatizar la generación de un gráfico por rango (o cualquier otra entidad), exportando los resultados en forma de imágenes PNG, listas para insertar en un informe.
Y la buena noticia es que no hace falta codificar un plugin, vamos a usar la consola Python de QGIS, con pandas y plotly.
Objetivo
Crear automáticamente :
- Una gráfica por rango, mostrando la cantidad de residuos por tipo
- Un archivo de imagen PNG por gráfico
- Sin clics repetidos ni manipulación manual
Ejemplo
Tenemos una capa de datos de basura de playa, con los siguientes campos:
- playa: nombre de la playa
- tipo_residuos: tipo (plástico, metal, etc.)
- cantidad: número de objetos registrados

El script Python en QGIS
Aquí tienes un script que puedes copiar en la consola 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)
Requisitos previos
Para que el script funcione, comprueba que :
- Tu entorno Python en QGIS contiene pandas , plotly y kaleido
- Si no es así, puede instalarlo a través de la consola sistema:
- C:\OSGeo4W\OSGeo4W.bat > python3 -m pip install pandas plotly kaleido
Personalizar
Puede cambiar :
- El campo de agrupación («range») para graficar por comuna, fecha, etc.
- El tipo de gráfico: usar px.pie, px.line, px.histogram, etc.
Resultados esperados
En su fichero, obtendrá :
graph_Anse_Mourouk.png
graph_Pointe_Coton.png
graph_Graviers.png
...

Cada imagen corresponde a un rango, con un gráfico claro listo para ser insertado en un informe o atlas.
Si modificas el código para producir gráficos circulares:
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"))
Obtendrá:

En resumen
Aunque Data Plotly es útil para crear gráficos en QGIS, no es scriptable en Python. Sin embargo, extrayendo los datos y utilizando plotly, te beneficias de :
- un control total
- un script reutilizable
- visuales profesionales.
Próximamente…
En un próximo artículo, veremos cómo integrar automáticamente estos gráficos en un Atlas QGIS, para crear informes PDF totalmente personalizados.