Come creare una legenda dell'istogramma nel compositore di stampe QGIS?


14

Ho trovato questo post sul blog mentre cercavo un modo per costruire dinamicamente un grafico (istogramma) nel compositore di stampe.

La funzione che voglio replicare dal blog è disegnare rettangoli statici nel compositore di stampa qgis e quindi ridimensionarli in base a un valore di campo in questo caso come barre su un istogramma.

Creando così una legenda / istogramma

Posso seguire questo tutorial ma ero solo curioso di sapere se a) c'era un modo più semplice al di fuori della creazione del grafico di cui ho bisogno in matplotlib e dell'importazione di un'immagine eb) questa funzionalità sarebbe stata integrata in qgis nelle versioni future.

inserisci qui la descrizione dell'immagine

Risposte:


8

Ho visto anche quel post sul blog e mi chiedevo la stessa cosa!

Puoi usare i frame HTML e la libreria D3 , se non ti dispiace fare un po 'di JavaScript.

Ecco un esempio che ho codificato. È possibile inserire espressioni QGIS nell'origine della pagina (da QGIS 2.14 o successivo)

esempio di cornice dt html nel compositore di stampa qgis

Nel mio caso, ho salvato il file html localmente e l'ha hackerato fino a quando non l'ho visualizzato, utilizzando gli strumenti di sviluppo del browser.

Una volta che funziona, dovresti essere in grado di incollare direttamente l'origine della pagina nella casella di testo "sorgente" e rilasciare le espressioni QGIS (come valori di campo, variabili ecc.) Usando il Insert an expressionpulsante.

Ho messo insieme quell'esempio di alignleft.com . Questo tutorial è utile in quanto mostra come costruire grafici a barre da semplici elenchi; la maggior parte degli esempi che ho visto usano file TSV separati.

Bl.ocks.org ha una serie molto ampia di esempi.

Puoi ottenere il codice per i tutorial di AlignedLeft qui su GitHub

Questo potrebbe essere un buon plugin ... Vedo che ci sono già un paio di plugin d3, anche se non ho avuto la possibilità di provarli - forse vale la pena dare un'occhiata?


2

Il plug-in DataPlotly sta arrivando lì.

Invece di ridimensionare i rettangoli utilizzando i valori percentuali di un campo precalcolato utilizzando uno strumento esterno (Excel è stato utilizzato nel post di blog collegato), DataPlotly consente di calcolare direttamente gli istogrammi delle funzionalità di Atlas:

Ho aggiunto l'XML di configurazione per l'oggetto DataPlotly alla fine di questa risposta.

Negli istogrammi Plotly tutte le barre hanno lo stesso colore. Per ottenere barre colorate singolarmente, ho dovuto manipolare un oggetto legenda (10 colonne, sostituire tutti i testi delle voci della legenda con spazi, rimuovere tutta la spaziatura, regolare con attenzione l'altezza e la larghezza dei simboli, ...) e posizionarlo sull'istogramma usando il metodo di fusione "Schermo".

Alcune cose non funzionano ancora con DataPlotly

  • Barre orizzontali durante la specifica dei limiti degli assi
  • Etichettare ogni barra
  • Regolazione dei caratteri dell'etichetta
  • Rimozione / regolazione delle linee della griglia

Il plug-in DataPlotly è in fase di sviluppo attivo, quindi alcuni di questi problemi potrebbero essere risolti in futuro.


File di configurazione di DataPlotly configuration.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE dataplotly>
<Option type="Map">
 <Option type="Map" name="dynamic_properties">
  <Option type="QString" name="name" value=""/>
  <Option name="properties"/>
  <Option type="QString" name="type" value="collection"/>
 </Option>
 <Option type="Map" name="plot_layout">
  <Option type="QString" name="additional_info_expression" value=""/>
  <Option type="QString" name="bar_mode" value="group"/>
  <Option type="double" name="bargaps" value="0"/>
  <Option type="bool" name="bins_check" value="true"/>
  <Option type="bool" name="legend" value="false"/>
  <Option type="QString" name="legend_orientation" value="h"/>
  <Option type="invalid" name="legend_title"/>
  <Option type="Map" name="polar">
   <Option type="Map" name="angularaxis">
    <Option type="QString" name="direction" value="clockwise"/>
   </Option>
  </Option>
  <Option type="Map" name="range_slider">
   <Option type="int" name="borderwidth" value="1"/>
   <Option type="bool" name="visible" value="false"/>
  </Option>
  <Option type="QString" name="title" value=""/>
  <Option type="invalid" name="x_inv"/>
  <Option type="double" name="x_max" value="10.5"/>
  <Option type="double" name="x_min" value="0.5"/>
  <Option type="QString" name="x_title" value=""/>
  <Option type="QString" name="x_type" value="linear"/>
  <Option type="invalid" name="xaxis"/>
  <Option type="invalid" name="y_inv"/>
  <Option type="invalid" name="y_max"/>
  <Option type="invalid" name="y_min"/>
  <Option type="QString" name="y_title" value=""/>
  <Option type="QString" name="y_type" value="linear"/>
  <Option type="QString" name="z_title" value=""/>
 </Option>
 <Option type="Map" name="plot_properties">
  <Option type="invalid" name="additional_hover_text"/>
  <Option type="int" name="bins" value="10"/>
  <Option type="QString" name="box_orientation" value="v"/>
  <Option type="bool" name="box_outliers" value="false"/>
  <Option type="bool" name="box_stat" value="false"/>
  <Option type="invalid" name="color_scale"/>
  <Option type="bool" name="color_scale_data_defined_in_check" value="false"/>
  <Option type="bool" name="color_scale_data_defined_in_invert_check" value="false"/>
  <Option type="QString" name="cont_type" value="fill"/>
  <Option type="QString" name="contour_type_combo" value="Fill"/>
  <Option type="bool" name="cumulative" value="false"/>
  <Option type="List" name="custom">
   <Option type="QString" value="IMDD15"/>
  </Option>
  <Option type="QString" name="hover_text" value="all"/>
  <Option type="QString" name="in_color" value="#000000"/>
  <Option type="bool" name="invert_color_scale" value="false"/>
  <Option type="QString" name="invert_hist" value="increasing"/>
  <Option type="QString" name="line_combo" value="Solid Line"/>
  <Option type="QString" name="line_dash" value="solid"/>
  <Option type="QString" name="marker" value="markers"/>
  <Option type="double" name="marker_size" value="10"/>
  <Option type="int" name="marker_symbol" value="0"/>
  <Option type="QString" name="marker_type_combo" value="Points"/>
  <Option type="double" name="marker_width" value="1"/>
  <Option type="QString" name="name" value="IMDD15"/>
  <Option type="QString" name="normalization" value=""/>
  <Option type="double" name="opacity" value="1"/>
  <Option type="QString" name="out_color" value="#ffffff"/>
  <Option type="QString" name="point_combo" value=""/>
  <Option type="bool" name="selected_features_only" value="false"/>
  <Option type="bool" name="show_colorscale_legend" value="false"/>
  <Option type="bool" name="show_lines" value="false"/>
  <Option type="bool" name="show_lines_check" value="false"/>
  <Option type="bool" name="show_mean_line" value="false"/>
  <Option type="bool" name="violin_box" value="false"/>
  <Option type="QString" name="violin_side" value="both"/>
  <Option type="bool" name="visible_features_only" value="true"/>
  <Option type="QString" name="x_name" value="IMDD15"/>
  <Option type="QString" name="y_name" value=""/>
  <Option type="QString" name="z_name" value=""/>
 </Option>
 <Option type="QString" name="plot_type" value="histogram"/>
 <Option type="QString" name="source_layer_id" value="london_IMD_2004_2010_2015_081015_v120160214112646566"/>
</Option>

1
uso meraviglioso di DataPlotly! Ti dispiace aprire alcuni problemi del repository dei plugin in modo che io possa dare un'occhiata e vedere cosa posso fare? github.com/ghtmtt/DataPlotly
matteo

@matteo: Fatto! Grazie per tutto il tuo duro lavoro su questo plugin super utile!
Jake,

Sono contento che molte persone trovino utile DataPlotly!
Matteo
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.