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?

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


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()

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


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


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
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.