2014-11-26 4 views
6

Ich möchte meine vertikalen Linien mit Matplotlibs .vline-Befehl beschriften, aber aus irgendeinem Grund macht der Label-Parameter nichts/zeigen nichts auf dem endgültigen Plot. Weiß jemand, wie man das Etikett zum Vorzeigen bringt?Matplotlib vline label Parameter nicht angezeigt

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

Alles funktioniert abgesehen von der Bezeichnung.

Vielen Dank,

L

Antwort

9

Das Label Schlüsselwort in der Legende angezeigt wird. Sie müssen die legend erstellen explizit das Label in der Handlung zu sehen:

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

Danke dafür, macht logischen Sinn jetzt ... Aber nachdem Sie stundenlang auf den Bildschirm starren, steigen Sie in den Wahnsinn. – Lawrence

+0

Ebenso bin ich auch in den Wahnsinn verfallen. Was ist der beste Weg, um Beschriftungen über der y-Achse (also auf 'ymax = plot.get_ylim() [1] ') statt der Legende zu zeigen? (möglicherweise eine andere Bezeichnung für jede Position von 'vlines')? Für mehr Kontext habe ich das folgende Problem mit den Etiketten: https://github.com/chapmanz/bcbio-nextgen/pull/1204 – brainstorm

1

Dies funktioniert

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

aber ich weiß nicht, ob das, was Sie

erwarten ist
0

Für Text in der Nähe Ihrer Linie, wie in dieser example Verwendung:

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

auch diese kurze scri pt hält mehr Optionen wenn du willst: https://pythonhosted.org/lineid_plot/#

Verwandte Themen