Wie kann man eine Legende für ein Liniendiagramm in Matplotlibs PyPlot erstellen, ohne zusätzliche Variablen zu erstellen?
Bitte beachten Sie das folgende Diagrammskript:
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("Kombinierte Statistiken")
PyPlot.xlabel("Länge der Liste (Anzahl)")
PyPlot.ylabel("Zeit (in Sekunden)")
PyPlot.show()
Wie Sie sehen können, handelt es sich hierbei um eine sehr einfache Verwendung von Matplotlibs PyPlot. Dies erzeugt idealerweise ein Diagramm wie das folgende:
Nichts Besonderes, ich weiß. Es ist jedoch unklar, welche Daten wo dargestellt werden (ich versuche, die Daten einiger Sortieralgorithmen, Länge gegen benötigte Zeit, zu plotten, und ich möchte sicherstellen, dass die Leute wissen, welche Linie welche ist). Daher benötige ich eine Legende, jedoch, wenn Sie sich das folgende Beispiel unten ansehen (von der offiziellen Seite):
ax = subplot(1,1,1)
p1, = ax.plot([1,2,3], label="Linie 1")
p2, = ax.plot([3,2,1], label="Linie 2")
p3, = ax.plot([2,3,1], label="Linie 3")
handles, labels = ax.get_legend_handles_labels()
# die Reihenfolge umkehren
ax.legend(handles[::-1], labels[::-1])
# oder nach Labels sortieren
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 meiner Grafik eine Legende hinzufügen, ohne diese zusätzliche Variable erstellen zu müssen und gleichzeitig die Einfachheit meines aktuellen Skripts beizubehalten?