Exporte automáticamente una serie de gráficos por característica utilizando QGIS y Python (sin Data Plotly)

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 :

  1. Una gráfica por rango, mostrando la cantidad de residuos por tipo
  2. Un archivo de imagen PNG por gráfico
  3. 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.


Si cet article vous a intéressé et que vous pensez qu'il pourrait bénéficier à d'autres personnes, n'hésitez pas à le partager sur vos réseaux sociaux en utilisant les boutons ci-dessous. Votre partage est apprécié !

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *