Plot Customization, Legende in drei Zeilen

mit matplotlib, NumPy, pandas, SciPy, SymPy und weiteren mathematischen Programmbibliotheken.
Antworten
jp21
User
Beiträge: 20
Registriert: Freitag 1. April 2022, 14:33

Hallo Ihr lieben,

das hier ist der Code meines Plot's und ich möchte nun die Legende in drei Zeilen anzeigen lassen, undzwar so:

o Modus 1 x Modus 2
o Modus 3 x Modus 4
o Kompensation

und nicht:

o Modus 1 x Modus 4
x Modus 2 o Kompensation
o Modus 3

Code: Alles auswählen

x = df["x"]
y1 = df["y1"]
y2 = df["y2"]
y3 = df["y3"]
y4 = df["y4"]
y5 = df["y5"]

plt.scatter(x,y1, marker='o', color='black')
plt.scatter(x,y2, marker='x', color='red')
plt.scatter(x,y3, marker='o', color='red')
plt.scatter(x,y4, marker='x', color='black')
plt.scatter(x,y5, marker='o', color='darkblue')

mpl.rcParams["mathtext.default"] = 'regular' # Schrift im Formelmodus $$ ist nicht italic
plt.title("Sensor #2")
plt.xlabel("x-Achse")
plt.ylabel("$Y_{Achse}$")
plt.axis('tight')
plt.legend(["Modus 1", "Modus 2","Modus 3", "Modus 4", "Mittelwert"], loc = "best", ncol=2, frameon=False)
plt.show()
Wie mache ich das am geschicktesten?
Benutzeravatar
__blackjack__
User
Beiträge: 13069
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

@jp21: Du musst die doch nur in der richtigen Reihenfolge beim `legend()`-Aufruf übergeben.

Wobei ich das nicht sehr robust finde erst zu plotten und dann später eine Legende zu erstellen wo die Reihenfolge mit der Reihenfolge vom plotten zusammen passen muss. Da können sich leicht Fehler einschleichen, entweder schon beim ersten schreiben, oder wenn man das Programm mal ändert. Also die Beschriftung am besten gleich als `label`-Argument beim Plotten den Daten zuordnen, dann kann da später nicht so leicht etwas verwechselt werden. Für die Legende kann man sich dann die Werte für `handles` und `labels` vom Axes-Objekt mit der `get_legend_handles_labels()`-Methode geben lassen und beides beliebig umordnen, bevor man es an `legend()` übergibt.
„All religions are the same: religion is basically guilt, with different holidays.” — Cathy Ladman
jp21
User
Beiträge: 20
Registriert: Freitag 1. April 2022, 14:33

Danke für den Tip, habs gelöst bekommen!
Antworten