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?
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