Adăugarea unei legende la PyPlot în Matplotlib în cel mai simplu mod posibil
TL;DR -> Cum se poate crea o legendă pentru un grafic linie în
Matplotlib
'sPyPlot
fără a crea orice variabile suplimentare?
Vă rugăm să ia în considerare grafice script-ul de mai jos:
if __name__ == '__main__':
PyPlot.plot(total_lengths, sort_times_bubble, 'b-',
total_lengths, sort_times_ins, 'r-',
total_lengths, sort_times_merge_r, 'g+',
total_lengths, sort_times_merge_i, 'p-', )
PyPlot.title("Combined Statistics")
PyPlot.xlabel("Length of list (number)")
PyPlot.ylabel("Time taken (seconds)")
PyPlot.show()
După cum puteți vedea, aceasta este o foarte de bază de utilizare a matplotlib's
PyPlot`. Acest ideal generează un grafic ca cel de mai jos:
Nimic special, știu. Cu toate acestea, nu este clar ce fel de date este de a fi complotat în cazul în care (I'm încercat să complot datele unor algoritmi de sortare, lungime împotriva dată luate, și am'd dori să asigurați-vă că oamenii știu care este linia care). Astfel, am nevoie de o legenda, cu toate acestea, de a lua o privire la următorul exemplu de mai jos(de la site-ul oficial):
ax = subplot(1,1,1)
p1, = ax.plot([1,2,3], label="line 1")
p2, = ax.plot([3,2,1], label="line 2")
p3, = ax.plot([2,3,1], label="line 3")
handles, labels = ax.get_legend_handles_labels()
# reverse the order
ax.legend(handles[::-1], labels[::-1])
# or sort them by labels
import operator
hl = sorted(zip(handles, labels),
key=operator.itemgetter(1))
handles2, labels2 = zip(*hl)
ax.legend(handles2, labels2)
Veți vedea că am nevoie pentru a crea o variabilă suplimentară topor
. Cum pot adauga o legenda graficului meu without a crea această variabilă suplimentară și păstrând simplitatea de actualul meu script.
Adauga un
label ' =
la fiecareplot()
telefoane, și apoi apellegenda(loc='din stânga sus')
.Luați în considerare această probă (testat cu Python 3.8.0):
Ușor modificate de la acest tutorial: http://jakevdp.github.io/mpl_tutorial/tutorial_pages/tut1.html
Puteți accesa Axe instanță (
ax
) cuplt.gca()
. În acest caz, puteți folosiPuteți face acest lucru fie prin utilizarea
label ' =
de cuvinte cheie în fiecare dinplt.complot()
apeluri sau prin atribuirea de etichete ca un tuplu sau o listă în "legendă", ca în acest exemplu de lucru:Cu toate acestea, dacă aveți nevoie pentru a accesa Axe de exemplu mai mult de o dată, eu nu recomand salvarea la variabila
ax
cuși atunci sun
ax "în loc de" plt.gca()
.Aici's un exemplu care să te ajute ...
Un simplu complot pentru sinus și cosinus curbe cu o legendă.
Folosit
matplotlib.pyplot
Adăugați etichete la fiecare argument în teren call corespunzătoare seriei grafice, și anume
label ' = "seria 1"
Apoi pur și simplu adăugați
Pyplot.legenda()
la partea de jos a script-ul dvs. și legenda va afișa aceste etichete.Puteți adăuga o legendă personalizate documentation
prima = [1, 2, 4, 5, 4] a doua = [3, 4, 2, 2, 3] plt.complot(în primul rând,'g - ', a doua, 'r,') plt.legenda(['Prima Listă','a Doua Listă'], loc='din stânga sus') plt.show()