Seite 1 von 1

Plot Customization, Legende in drei Zeilen

Verfasst: Freitag 1. April 2022, 14:52
von jp21
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?

Re: Plot Customization, Legende in drei Zeilen

Verfasst: Freitag 1. April 2022, 15:43
von __blackjack__
@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.

Re: Plot Customization, Legende in drei Zeilen

Verfasst: Samstag 2. April 2022, 15:01
von jp21
Danke für den Tip, habs gelöst bekommen!