Marcas de Python Matplotlib Y-Axis en el lado derecho de la gráfica


112

Tengo un diagrama de línea simple y necesito mover las marcas del eje y desde el lado izquierdo (predeterminado) del diagrama al lado derecho. ¿Alguna idea sobre cómo hacer esto?

Respuestas:


192

Utilizar ax.yaxis.tick_right()

por ejemplo:

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

ingrese la descripción de la imagen aquí


Excelente respuesta, obtienes un +1, te daría otro +1 por la imagen, pero estoy limitado a solo 1.
lukecampbell

Es interesante que esto haga que los nombres de las garrapatas vuelvan a aparecer aunque deberían ser suprimidos por sharey = True
endolith

¿Y qué pasa si quiero las marcas y las etiquetas tanto a la izquierda como a la derecha?
AstroFloyd

1
No resolví por qué, pero esto se rompe si tiene subtramas con sharey=True.
Steven C. Howell

¿Cuál es el comando para hacer que las marcas aparezcan a la izquierda y a la derecha? ¡Gracias!
tommy.carstensen

99

Para el uso de etiquetas correctas ax.yaxis.set_label_position("right"), es decir:

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 respuesta de Joaquin funciona, pero tiene el efecto secundario de eliminar las marcas del lado izquierdo de los ejes. Para solucionar este problema, tick_right()llame a set_ticks_position('both'). Un ejemplo revisado:

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

El resultado es un gráfico con marcas en ambos lados, pero etiquetas con marcas a la derecha.

ingrese la descripción de la imagen aquí


24

Solo en caso de que alguien pregunte (como hice yo), esto también es posible cuando se usa subplot2grid. Por ejemplo:

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

Mostrará esto:

ingrese la descripción de la imagen aquí


4
Esto también funciona con ax.tick_params(axis='y', which='both', labelleft='off', labelright='on'). Pero no se mueve elylabel
Eric

1
Bueno, siempre puedes usar plt.gca()para obtener el objeto de ejes actual. Por lo tanto, usaría:plt.gca().yaxis.set_label_position("right")
sannaj
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.