Seite 1 von 1

Subplots twinx()

Verfasst: Mittwoch 20. Januar 2021, 17:46
von Ameinsenpeter
Hallo Community,
bin gerade dabei, Daten zu visualisieren. Dafür habe ich eine figure erstellt mit 6 Subplots. Bei jedem dieser Subplots möchte ich nun eine zweite y-Achse einfügen via twinx().
Leider klappt das nicht wie ich mir das vorstelle und langsam bin ich am verzweifeln. Mein Code sieht in etwa so aus:

Code: Alles auswählen

fig, ax = plt.subplots(3, 2, figsize = (...))
# Hier nun if/else um Zeile und Spalte zu bestimmen (funktioniert, aber uninteressant)
ax[zeile, spalte].plot(xDaten, yDaten, ...)
ax2 = fig.gca().twinx()
ax2.plot(xDaten, y2Daten, ...)
Das funktioniert leider nur insofern, dass nur beim letzten subplot, also ax[2,1], eine zweite y-Achse da ist.
Nun meine Frage, weiß jemand wie ich bei allen subplots eine zweite y-Achse bekomme?

Vielen Dank schon mal und Grüße an alle

Peter

Re: Subplots twinx()

Verfasst: Mittwoch 20. Januar 2021, 19:41
von __blackjack__
@Ameinsenpeter: `Figure.gca()` liefert das *eine* aktuelle `Axes`-Objekt und das ist eben immer das zuletzt hinzugefügte. Du hast die einzelnen `Axes`-Objekte ja in `ax`.

Code: Alles auswählen

ax[zeile, spalte].plot(xDaten, yDaten, ...)
ax2 = fig.gca().twinx()
ax2.plot(xDaten, y2Daten, ...)

# =>

ax2 = ax[zeile, spalte]
ax2.plot(xDaten, yDaten, ...)
ax2.twinx()
ax2.plot(xDaten, y2Daten, ...)

Re: Subplots twinx()

Verfasst: Donnerstag 21. Januar 2021, 14:30
von Ameinsenpeter
@blackjack, danke wieder mal für deine Hilfe. Ich dachte das aktuelle axes Objekt wäre das, in das gerade geplottet wird. Hab ich wohl falsch gedacht.
Mit deinem Code hat es noch nicht ganz geklappt, jedoch war das schon sehr nah.
Hier nochmal der Code der das Problem löst, für alle die das selbe Problem haben :D :

Code: Alles auswählen

ax1 = ax[zeile, spalte]
ax1.plot(xDaten, yDaten, ...)
ax2 = ax1.twinx()
ax2.plot(xDaten, y2Daten, ...)