2014-10-01 6 views
5

Ho una trama con più righe, ciascuna etichettata separatamente. Mi piacerebbe mettere una leggenda nella trama in modo che le singole linee possano essere identificate. L'ordinamento di default delle etichette e marcatori sembra qualcosa di simile:Legenda Matlotlib: etichette sopra i marcatori

marcatore: etichetta
marcatore: etichetta
marcatore: etichetta
... e così via.

Per vari motivi estetici mi piacerebbe che il numero di colonne della mia legenda fosse uguale al numero di linee (e di etichette), che cambio usando l'opzione ncol. Quindi, attualmente, il mio mito appare come:

marcatore: etichetta         marcatore: etichetta         marcatore: etichetta

Sarebbe molto più chiaro per me, però, di avere le etichette sopra i marcatori in questa disposizione. Quello che vorrei è qualcosa di simile:

etichetta             etichetta             etichetta
marcatore     marcatore     marcatore

Mi chiedo se c'è un "rapido sistemare "il modo di raggiungere una tale leggenda.

+0

Hai già trovato una "soluzione rapida" a questo problema? Sarei interessato anche a fare questo. –

+0

Dalla documentazione sembra che le uniche opzioni siano il marker: label o label: marker. – pceccon

risposta

1

Alla fine il modo in cui sono andato a fare questo era configurare manualmente le posizioni degli elementi di testo nella legenda usando legend.get_texts() per scorrere su ogni oggetto di testo. Qualche codice fittizio:

for txt in legend.get_texts(): 
    txt.set_ha("center") # horizontal alignment of text item 
    txt.set_x(-5) # x-position 
    txt.set_y(10) # y-position 

Aumentando la posizione y, si spinge l'etichetta verso l'alto (cioè sopra il marker). Allo stesso modo diminuendo la posizione x è possibile raggiungere l'allineamento sopra la parte superiore del marcatore.