TL; DR -> Wie kann man eine Legende für ein Liniendiagramm in erstellen
Matplotlib
‚sPyPlot
ohne zusätzliche Variablen zu erstellen?
Bitte beachten Sie das folgende Grafikskript:
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 grundlegende Verwendung von matplotlib
's PyPlot
. Dies erzeugt idealerweise ein Diagramm wie das folgende:
Nichts besonderes, ich weiß. Es ist jedoch unklar, welche Daten wo geplottet werden (ich versuche, die Daten einiger Sortieralgorithmen zu zeichnen, Länge gegen Zeit, und ich möchte sicherstellen, dass die Leute wissen, welche Linie welche ist). Daher brauche ich jedoch eine Legende, die sich das folgende Beispiel ( von der offiziellen Website ) ansieht :
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 erstellen muss ax
. Wie kann ich meinem Diagramm eine Legende hinzufügen, ohne diese zusätzliche Variable erstellen zu müssen und die Einfachheit meines aktuellen Skripts beizubehalten?
quelle
matplotlib
haben, wollte ich die Dinge so einfach wie möglich halten. Wenn Sie sich Robs Antwort ansehen, ist sie weitaus einfacher als das auf der Website gezeigte Beispiel. Ich hoffe das hilft.import matplotlib.pyplot as plt
anstelle vonPyPlot
Antworten:
Fügen Sie
label=
jedem Ihrerplot()
Anrufe ein hinzu und rufen Sie dann anlegend(loc='upper left')
.Betrachten Sie dieses Beispiel (getestet mit Python 3.8.0):
Von diesem Tutorial leicht modifiziert: http://jakevdp.github.io/mpl_tutorial/tutorial_pages/tut1.html
quelle
plt.legend(loc='upper left')
funktioniert auch, woherplt
kommtimport matplotlib.pyplot as plt
.plt.legend
:plt.legend(['First Label', 'Second Label'])
Sie können mit auf die Axes-Instanz (
ax
) zugreifenplt.gca()
. In diesem Fall können Sie verwendenSie können dies entweder tun, indem Sie das
label=
Schlüsselwort in jedem Ihrerplt.plot()
Anrufe verwenden oder indem Sie Ihre Beschriftungen als Tupel oder Liste darin zuweisenlegend
, wie in diesem Arbeitsbeispiel:Wenn Sie jedoch mehrmals auf die Axes-Instanz zugreifen müssen, empfehle ich, sie in der Variablen
ax
mit zu speichernund dann anrufen
ax
stattplt.gca()
.quelle
Hier ist ein Beispiel, um Ihnen zu helfen ...
quelle
Ein einfaches Diagramm für Sinus- und Cosinuskurven mit einer Legende.
Gebraucht
matplotlib.pyplot
quelle
Fügen Sie jedem Argument in Ihrem Plotaufruf Beschriftungen hinzu, die der grafisch dargestellten Reihe entsprechen, d. H.
label = "series 1"
Fügen Sie dann einfach
Pyplot.legend()
am Ende Ihres Skripts hinzu, und die Legende zeigt diese Beschriftungen an.quelle
Sie können eine eigene Legende hinzufügen Dokumentation
quelle
quelle