Hinzufügen einer Legende zu PyPlot in Matplotlib auf möglichst einfache Weise
TL;DR -> Wie kann man eine Legende für ein Liniendiagramm in
Matplotlib
'sPyPlot
erstellen, ohne zusätzliche Variablen zu erstellen?
Bitte betrachten Sie das folgende Skript:
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()
Wie Sie sehen können, ist dies eine sehr einfache Anwendung von matplotlib
's PyPlot
. Dies erzeugt idealerweise einen Graphen wie den untenstehenden:
Nichts Besonderes, ich weiß. Es ist jedoch unklar, welche Daten wo gezeichnet werden (ich versuche, die Daten einiger Sortieralgorithmen, Länge gegen benötigte Zeit, zu zeichnen, und ich möchte sicherstellen, dass die Leute wissen, welche Linie welche ist). Daher benötige ich eine Legende, wie das folgende Beispiel zeigt (von der offiziellen Website):
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)
Sie werden sehen, dass ich eine zusätzliche Variable ax
erstellen muss. Wie kann ich meinem Diagramm eine Legende hinzufügen, ohne diese zusätzliche Variable erstellen zu müssen, und die Einfachheit meines derzeitigen Skripts beibehalten?
Fügen Sie jedem Ihrer
plot()
-Aufrufe einlabel=
hinzu, und rufen Sie dannlegend(loc='upper left')
auf.Betrachten Sie dieses Beispiel (getestet mit Python 3.8.0):
Leicht abgewandelt von diesem Tutorial: http://jakevdp.github.io/mpl_tutorial/tutorial_pages/tut1.html
Hier ist ein Beispiel, das Ihnen helfen soll ...
Fügen Sie jedem Argument in Ihrem Diagrammaufruf Beschriftungen hinzu, die der darzustellenden Reihe entsprechen, d. h.
label = "series 1"
Fügen Sie dann einfach
Pyplot.legend()
am Ende Ihres Skripts hinzu, und die Legende wird diese Beschriftungen anzeigen.