487 Stimmen

Hinzufügen einer matplotlib Legende

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:

Graph

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?

10voto

blaklaybul Punkte 780

Fügen Sie jedem Argument in Ihrem Diagrammaufruf Beschriftungen hinzu, die der zu grafierenden Serie entsprechen, d.h. label = "Serie 1"

Fügen Sie dann einfach Pyplot.legend() am Ende Ihres Skripts hinzu und die Legende wird diese Beschriftungen anzeigen.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X