Marcas del eje Y en el lado derecho del gráfico

2 minutos de lectura

Avatar de usuario de Jason Strimpel
Jason Strimpel

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

Usar 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í

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

    – lucas campbell

    27 de abril de 2012 a las 17:23

  • Es interesante que esto haga que los nombres de los ticks regresen aunque deberían ser suprimidos por sharey=True

    – endolito

    17 dic 2017 a las 20:19

  • ¿Y si quiero las marcas y las etiquetas tanto a la izquierda como a la derecha?

    – AstroFloyd

    16 de febrero de 2018 a las 16:59

  • No resolví por qué, pero esto se rompe si tienes tramas secundarias con sharey=True.

    – Steven C. Howell

    3 mayo 2018 a las 18:41

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

    – tommy.carstensen

    2 de agosto de 2018 a las 5:57

Avatar de usuario de Dietrich
Dietrich

Para usar las 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()

la respuesta de joaquín funciona, pero tiene el efecto secundario de eliminar las garrapatas del lado izquierdo de los ejes. Para arreglar esto, haz un seguimiento tick_right() con una llamada 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 una gráfica con marcas en ambos lados, pero etiquetas de marcas a la derecha.

ingrese la descripción de la imagen aquí

Solo en caso de que alguien pregunte (como lo hice yo), esto también es posible cuando uno 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í

Usando subtramas y si está compartiendo el eje y (es decir, sharey=True), antes de crear la trama, intente:

plt.rcParams['ytick.right'] = plt.rcParams['ytick.labelright'] = True
plt.rcParams['ytick.left'] = plt.rcParams['ytick.labelleft'] = False

De: galería matplotlib

  • Funciona perfectamente en 2022 con la versión actual de matplotlib.

    – espiral cuadrada

    27 de noviembre de 2022 a las 20:49


  • Funciona perfectamente en 2022 con la versión actual de matplotlib.

    – espiral cuadrada

    27 de noviembre de 2022 a las 20:49


¿Ha sido útil esta solución?