Python Matplotlib Y-Axis tick sul lato destro del grafico


112

Ho un semplice grafico a linee e devo spostare i segni di graduazione dell'asse y dal lato sinistro (predefinito) del grafico al lato destro. Qualche idea su come farlo?

Risposte:


192

Uso ax.yaxis.tick_right()

per esempio:

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

inserisci qui la descrizione dell'immagine


Ottima risposta, ottieni un +1, ti darei un altro +1 per l'immagine ma sono limitato a solo 1.
lukecampbell

È interessante notare che questo fa sì che i nomi delle zecche tornino anche se dovrebbero essere soppressi da sharey = True
endolith

E se volessi i segni di spunta e le etichette sia a sinistra che a destra?
AstroFloyd

1
Non ho capito perché, ma questo si interrompe se hai sottotrame con sharey=True.
Steven C. Howell

Qual è il comando per far apparire le zecche a sinistra ea destra? Grazie!
tommy.carstensen

99

Per etichette corrette utilizzare ax.yaxis.set_label_position("right"), ad esempio:

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

La risposta di joaquin funziona, ma ha l'effetto collaterale di rimuovere le zecche dal lato sinistro degli assi. Per risolvere questo problema, segui tick_right()una chiamata a set_ticks_position('both'). Un esempio rivisto:

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

Il risultato è un grafico con segni di spunta su entrambi i lati, ma etichette di spunta a destra.

inserisci qui la descrizione dell'immagine


24

Solo nel caso qualcuno lo chieda (come ho fatto io), questo è possibile anche quando si usa subplot2grid. Per esempio:

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

Mostrerà questo:

inserisci qui la descrizione dell'immagine


4
Funziona anche con ax.tick_params(axis='y', which='both', labelleft='off', labelright='on'). Ma non sposta ilylabel
Eric

1
Bene, puoi sempre usare plt.gca()per ottenere l'oggetto assi corrente. Quindi plt.gca().yaxis.set_label_position("right")
useresti
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.