Wie machen die beiden Marken teilen sich die gleiche Beschriftung in der Legende mit matplotlib?
Was ich will, ist, wie diese:
Was ich bekomme ist diese:
So, wie die Zusammenführung der Markierungen in einem label?
auch für die Linien, für die Linien, natürlich, u kann es realisieren, indem nicht die Zuordnung label der zweiten Zeile unter Verwendung der gleichen Linientyp, aber für die Marker, können Sie nicht, da Sie in verschiedenen Formen.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich denke, es ist am besten, um eine vollständige Legende - ansonsten, wie Ihre Leser Sie kennen den Unterschied zwischen den beiden Modellen, oder die zwei datasets? Ich würde es so machen:
Aber, wenn Sie wirklich wollen, es zu tun Ihrem Weg, die Sie verwenden können, eine benutzerdefinierte Legende wie in diesem guide. Sie benötigen zum erstellen Ihrer eigenen Klasse, wie Sie tun, definiert, der im
legend_artist
- Methode, die dann addiert die Quadrate und Kreise als angemessen. Hier ist der plot erzeugt und den code zu generieren:Hier ist eine neue Lösung, mit der plot-eine Sammlung von Marken mit dem gleichen label. Ich habe nicht herausgefunden, wie es funktioniert mit Markern aus einem Liniendiagramm, aber Sie können wahrscheinlich tun ein Streudiagramm, das oben auf der line-plot, wenn Sie benötigen.
Habe ich eine Lösung für Sie, wenn Sie bereit sind, zu verwenden, alle Kreise für Marker und unterscheiden von Farben nur. Sie können mit einer Kreis-Kollektion, Sie repräsentieren die Marker, und dann eine Legende-label für die Kollektion als ganzes.
Beispiel-code:
Fand ich auch dieser link sehr nützlich (code unten), es ist ein einfacher Weg, um zu umgehen dieses Problem. Es ist im Grunde mit einer Liste der Legende behandelt, um eine der Markierungen der erste Griff unsichtbar und overplot es mit der Markierung von der zweiten Griff. Auf diese Weise, Sie haben beide Marken nebeneinander mit einem label.
Beachten Sie, dass in neueren Versionen von matplotlib, können Sie erreichen dies mit
Klasse matplotlib.legend_handler.HandlerTuple
wie dargestellt in diesem Antwort und auch in diesem guide:Können Sie dies durch zeichnen von Daten, ohne eine Beschriftung, und klicken Sie dann hinzufügen das label separat: