Exporte automaticamente uma série de gráficos baseados em recursos com QGIS e Python (sem Data Plotly)

Em nossos artigos anteriores, vimos como criar gráficos no QGIS usando o Data Plotly. Hoje, vamos dar um passo adiante: automatizar a geração de um gráfico por intervalo (ou qualquer outra entidade), exportando os resultados na forma de imagens PNG, prontas para serem inseridas em um relatório.

E a boa notícia é que não há necessidade de codificar um plug-in, vamos usar o console Python do QGIS, com pandas e plotly.



Objetivo

Criar automaticamente :

  1. Um gráfico por intervalo, mostrando a quantidade de resíduos por tipo
  2. Um arquivo de imagem PNG por gráfico
  3. Sem cliques repetidos ou manipulação manual


Exemplo usado

Temos uma camada de dados de lixo de praia, com os seguintes campos:

  • beach: nome da praia
  • waste_type: tipo (plástico, metal, etc.)
  • quantity: número de objetos registrados


O script Python no QGIS

Aqui está um script que pode ser copiado para o console Python do 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é-requisitos

Para que o script funcione, verifique se :

  • Seu ambiente QGIS Python contém pandas, plotly e kaleido
  • Caso contrário, você pode instalá-los por meio do prompt de comando:

    • C:\OSGeo4W\OSGeo4W.bat > python3 -m pip install pandas plotly kaleido


Personalizar

Você pode alterar :

  • O campo de agrupamento (“range”) para plotar por município, data etc.
  • O tipo de gráfico: use px.pie, px.line, px.histogram, etc.


Resultados esperados

No seu arquivo, você obterá :

graph_Anse_Mourouk.png
graph_Pointe_Coton.png
graph_Graviers.png
...

Cada imagem corresponde a um intervalo, com um gráfico claro pronto para ser inserido em um relatório ou atlas.

Se você modificar o código para produzir gráficos de pizza:

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"))


Você obtém:


Em resumo

Embora o Data Plotly seja útil para criar gráficos no QGIS, ele não pode ser programado em Python. Entretanto, ao extrair os dados e usar o plotly, você se beneficia do :

  • controle total
  • um script reutilizável
  • visuais profissionais.


Em breve…

Em um artigo futuro, veremos como integrar automaticamente esses gráficos em um Atlas do QGIS, para criar relatórios em 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é !

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *