2014-11-26 32 views
6

Voglio etichettare le mie linee verticali con il comando .vline di matplotlib, ma per qualche motivo il parametro label non fa nulla/mostra nulla sul plot finale. Qualcuno sa come mostrare l'etichetta?Parametro etichetta vpl Matlotlib non visualizzato

plt.vlines(x=pah, ymin=0, ymax=0.6, colors='0.75', linestyles='dashed', label='PAHs') 

Tutto funziona a parte l'etichetta.

Molte grazie,

L

risposta

9

La parola chiave etichetta viene visualizzata nella legenda. È necessario creare il legend esplicitamente per vedere l'etichetta nella trama:

plt.vlines([1,2,3], 0, 1, label='test') 
plt.legend() 
+1

Grazie per questo, ha senso logico ora ... Ma dopo aver guardato lo schermo per ore e ore, si scende in follia. – Lawrence

+0

Allo stesso modo, sto scendendo anche nella follia. Qual è il modo migliore di mostrare le etichette sopra l'asse y (cioè, su 'ymax = plot.get_ylim() [1]') invece della legenda? (potenzialmente un'etichetta diversa per ogni posizione di 'vlines')? Per più contesto, ho il seguente problema con le etichette: https://github.com/chapmanb/bcbio-nextgen/pull/1204 – brainstorm

1

questo funziona

plt.plot(x,y) 
plt.vlines(x=pah, ymin=0, ymax=0.6, colors='0.75', linestyles='dashed', label='PAHs') 
plt.legend() 

ma non so se questo è ciò che ci si aspetta

0

Per il testo vicino alla vostra linea come in questo example uso:

vline_value = 3 

fig, ax = plt.subplots(figsize=(10,10)) 
ax.axvline(x=vline_value, ymin=0, ymax=1) 
x_bounds = ax.get_xlim() 
ax.annotate(s='vline_value', xy =(((vline_value-x_bounds[0])/(x_bounds[1]-x_bounds[0])),1.01), xycoords='axes fraction', verticalalignment='right', horizontalalignment='right bottom' , rotation = 270) 
fig.savefig('example') 

Inoltre, questo breve SCRi pt detiene più opzioni se si desidera: https://pythonhosted.org/lineid_plot/#