Plugin DataPlotly: come usare i colori della legenda

Ormai tutti conosciamo il famoso plugin per QGIS che permette di creare bei grafici (interattivi), non solo nella map canvas, ma anche nel compositore di stampe e atlas. Tra le mille opzioni, del plugin DataPlotly, vi è quella di associare dei colori ai grafici: ma se i colori li volessimo prendere dalla legenda (categorizzazione)? non è semplice né immediato, in questo blog post vedremo come rendere il tutto facilissimo.

Come si vede dallo screenshot di sopra, il grafico Bar Plot ha un unico colore e per modificarlo occorre agire in questa sezione:

ma non permette (nella versione 3.7, forse in futuro sì) di poter scegliere i colori della relativa legenda:

per ovviare a questa lacuna, ho chiesto a un caro amico (Giulio Fattori aka Korto19) di creare una funzione personalizzata (da usare nel field calc) che peschi i valori RGBA della legenda (caso categorizzato) in modo automatico, qui sotto la funzione:

from qgis.gui import *
from qgis.utils import iface
@qgsfunction(args='auto', group='Custom')
def get_catg_color(value, feature, parent):
"""
Restituisce il colore RGBA dell'elemento categorizzato:
il campo in input e' quello utilizzato per la categorizzazione
Per i campi della categorizzazione numerici formattatarli opportunamente e
utilizzare la stessa espressione per catturarne il colore
Returns the RGBA color of the categorized element:
the input field is the one used for categorization
For numeric categorization fields, format them appropriately and
use the same expression to get its color
<h2>Example usage:</h2>
<ul>
<li>get_color("Area") -> '228,52,199,255'</li>
<li>get_color(to_string(format_number("Area",2))) -> '228,52,199,255'</li>
</ul>
"""
layer = iface.activeLayer()
renderer = layer.renderer()
if layer.renderer().type() == "categorizedSymbol":
campo = renderer.legendClassificationAttribute()
for cat in renderer.categories():
if str(value) == cat.value():
colorato = cat.symbol().symbolLayer(0).properties()['color']
break
return colorato
view raw Get_cat_color.py hosted with ❤ by GitHub

ecco il risultato:

ogni barra ha lo stesso colore della legenda.

basta usare la funzione personalizzata get_catg_color() e come argomento il campo con cui abbiamo categorizzato.

NOTE FINALI: Una modifica di colore verrà renderizzata in automatico, quindi i colori dei grafici saranno sempre allineati ai colori della legenda. (spettacolare 💥💥💥).


RINGRAZIAMENTI

RIFERIMENTI


Se il blog post vi è piaciuto cliccate su ‘Mi piace’, grazie!!!
if you liked the blog post click on ‘Like’, thank you !!!

SE IL POST VI È STATO UTILE CONTRIBUITE A MANTENERLO AGGIORNATO PAYPAL


Rispondi

Inserisci i tuoi dati qui sotto o clicca su un'icona per effettuare l'accesso:

Logo di WordPress.com

Stai commentando usando il tuo account WordPress.com. Chiudi sessione /  Modifica )

Google photo

Stai commentando usando il tuo account Google. Chiudi sessione /  Modifica )

Foto Twitter

Stai commentando usando il tuo account Twitter. Chiudi sessione /  Modifica )

Foto di Facebook

Stai commentando usando il tuo account Facebook. Chiudi sessione /  Modifica )

Connessione a %s...

Questo sito utilizza Akismet per ridurre lo spam. Scopri come vengono elaborati i dati derivati dai commenti.