Matplotlib, Legende mit mehreren verschiedenen Marker, die mit einem label
Hier ist eine vereinfachte plot der situation:
Statt haben jeder Daten-Punkt-marker haben ein separates label, ich möchte in der Lage sein, um ein Etikett für eine Reihe von verschiedenen Marken. Ich möchte in der Lage sein, um eine Legende wie:
<triangle> <square> <hexagon> <diamond> <circle> Shotcrete strength data points
<green line> 10 minute strength
<blue line> 60 minute strength
<yellow line> 1 day strength
<orange line> 7 day strength
<red line> 28 day strength
Möchte ich dies tun, denn in die Letzte Handlung habe ich drei Sätze von Datenpunkten und zeigt 18 (3 Sätze * 6 Punkte/Satz) marker/label-Kombinationen wird chaotisch sein.
Ich bin mit Matplotlib mit Python 2.7.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Hinweis: die Antwort ist immer die als Leitfaden für die richtige Antwort - aber es führt nicht zur Lösung des genannten Problems. Bitte finden Sie unter Bearbeiten unten für das problem der Patch-Sammlungen nicht als support im matplotlib.
Einen Weg zu gehen über diese, wenn Sie wollen, dass die vollständige Anpassung ist die Verwendung eines sogenannten Proxy-Künstler:
Hier können Sie angeben genau was würden Sie wie die Legende Aussehen, und sogar die Verwendung von nicht-standard-plot-Formen (patches).
Edit: Es gibt einige Schwierigkeiten, die mit dieser Methode, matplotlib unterstützt nur diese Künstler in einer Legende ohne tweaking. Für matplotlib v1.0 und früheren Versionen, die unterstützt Künstler sind wie folgt.
Ihre Anfrage mehrerer scatter-Punkte gemacht werden würde mit einem Patch Collection, die nicht unterstützt wird. In der Theorie mit v1.1 ist dies möglich, aber ich sehe nicht, wie.
code
z = np.random.randn(10) p1a, = plt.plot(z, "ro", ms=10, mfc="r", mew=2, mec="r") # rot gefüllten Kreis p1b, = plt.plot(z[:5], "w+", ms=10, mec="w", mew=2) # das weiße Kreuz plt.Legende([p1a, (p1a, p1b)], ["Attr A", "Attr A+B"])code
kombinierte man mehrere Marker auf einer Linie.<triangle> <square> <hexagon> <diamond> <circle>
deshalb gab ich die Lösung wie ich es Tat. Sie können extrahieren Sie die symbol-Form aus der scatter-plot-Quelle (oder von scatter-selbst) und verwenden, mit dem eigene-Form, die als Eingabe fürlegend
.