Die Python Matplotlib Y-Achse markiert die rechte Seite des Diagramms

112

Ich habe ein einfaches Liniendiagramm und muss die Y-Achsen-Ticks von der (Standard-) linken Seite des Diagramms auf die rechte Seite verschieben. Irgendwelche Gedanken dazu?

Jason Strimpel
quelle

Antworten:

192

Verwenden ax.yaxis.tick_right()

beispielsweise:

from matplotlib import pyplot as plt

f = plt.figure()
ax = f.add_subplot(111)
ax.yaxis.tick_right()
plt.plot([2,3,4,5])
plt.show()

Geben Sie hier die Bildbeschreibung ein

Joaquin
quelle
Tolle Antwort, du bekommst eine +1, ich würde dir noch eine +1 für das Bild geben, aber ich bin auf nur 1 beschränkt.
Lukecampbell
Interessant, dass dies dazu führt, dass die Tick-Namen zurückkommen, obwohl sie durch sharey = True
endolith
Und was ist, wenn ich die Häkchen und Beschriftungen links und rechts haben möchte?
AstroFloyd
1
Ich habe nicht herausgefunden warum, aber das bricht, wenn Sie Nebenhandlungen mit haben sharey=True.
Steven C. Howell
Was ist der Befehl, um die Häkchen links und rechts erscheinen zu lassen? Vielen Dank!
Tommy.carstensen
99

Verwenden Sie für die richtigen Etiketten ax.yaxis.set_label_position("right")Folgendes:

f = plt.figure()
ax = f.add_subplot(111)
ax.yaxis.tick_right()
ax.yaxis.set_label_position("right")
plt.plot([2,3,4,5])
ax.set_xlabel("$x$ /mm")
ax.set_ylabel("$y$ /mm")
plt.show()
Dietrich
quelle
57

Joaquins Antwort funktioniert, hat aber den Nebeneffekt, dass Zecken von der linken Seite der Achsen entfernt werden. Um dies zu beheben, tick_right()rufen Sie anschließend an set_ticks_position('both'). Ein überarbeitetes Beispiel:

from matplotlib import pyplot as plt

f = plt.figure()
ax = f.add_subplot(111)
ax.yaxis.tick_right()
ax.yaxis.set_ticks_position('both')
plt.plot([2,3,4,5])
plt.show()

Das Ergebnis ist ein Diagramm mit Häkchen auf beiden Seiten, aber Häkchen auf der rechten Seite.

Geben Sie hier die Bildbeschreibung ein

Tom Baldwin
quelle
24

Nur wenn jemand fragt (wie ich), ist dies auch möglich, wenn man subplot2grid verwendet. Beispielsweise:

import matplotlib.pyplot as plt
plt.subplot2grid((3,2), (0,1), rowspan=3)
plt.plot([2,3,4,5])
plt.tick_params(axis='y', which='both', labelleft='off', labelright='on')
plt.show()

Es wird dies zeigen:

Geben Sie hier die Bildbeschreibung ein

Titianne
quelle
4
Dies funktioniert auch mit ax.tick_params(axis='y', which='both', labelleft='off', labelright='on'). Aber es bewegt dieylabel
Eric
1
Nun, Sie können immer plt.gca()das aktuelle Achsenobjekt abrufen. Daher würden Sie verwenden:plt.gca().yaxis.set_label_position("right")
Sannaj