¿Existe una forma sencilla de poner la etiqueta del eje y en el lado derecho del gráfico? Sé que esto se puede hacer para las etiquetas de tick usando ax.yaxis.tick_right()
, pero me gustaría saber si también se puede hacer para la etiqueta del eje.
Una idea que me vino a la mente fue utilizar
ax.yaxis.tick_right()
ax2 = ax.twinx()
ax2.set_ylabel('foo')
Sin embargo, esto no tiene el efecto deseado de colocar todas las etiquetas (etiquetas de marca y eje) en el lado derecho, mientras se conserva la extensión del eje y. En resumen, me gustaría una forma de mover todas las etiquetas del eje y de izquierda a derecha.
python
matplotlib
labels
apdnu
fuente
fuente
rhs = lambda ax: (ax.yaxis.set_label_position("right"), ax.yaxis.tick_right())
Si desea seguir el ejemplo dado en
matplotlib
y crear una figura con etiquetas en ambos lados de los ejes pero sin tener que usar lasubplots()
función, aquí está mi solución:from matplotlib import pyplot as plt import numpy as np ax1 = plt.plot() t = np.arange(0.01, 10.0, 0.01) s1 = np.exp(t) plt.plot(t,s1,'b-') plt.xlabel('t (s)') plt.ylabel('exp',color='b') ax2 = ax1.twinx() s2 = np.sin(2*np.pi*t) ax2.plot(t, s2, 'r.') plt.ylabel('sin', color='r') plt.show()
fuente
File "prueba.py", line 11, in <module>
ax2 = ax1.twinx()
AttributeError: 'list' object has no attribute 'twinx'
ax1 = plt.subplot()
(perdón por resucitar la pregunta)
Sé que es un truco sucio, pero si no quiere pasar al manejo de ejes y permanecer en los
plt
comandos, puede usar ellabelpad
argumento escalar para colocar su etiqueta a la derecha del lado del gráfico. Funciona después de un poco de prueba y error, y el valor escalar exacto posiblemente (?) Tenga que ver con las dimensiones del tamaño de su figura.Ejemplo:
# move ticks plt.tick_params(axis='y', which='both', labelleft=False, labelright=True) # move label plt.ylabel('Your label here', labelpad=-725, fontsize=18)
fuente
Las respuestas anteriores están desactualizadas. Aquí está el código más reciente para el ejemplo anterior:
import numpy as np import matplotlib.pyplot as plt t = np.arange(0.01, 10.0, 0.01) data1 = np.exp(t) data2 = np.sin(2 * np.pi * t) fig, ax1 = plt.subplots() color = 'tab:red' ax1.set_xlabel('time (s)') ax1.set_ylabel('exp', color=color) ax1.plot(t, data1, color=color) ax1.tick_params(axis='y', labelcolor=color) ax2 = ax1.twinx() # instantiate a second axes that shares the same x-axis color = 'tab:blue' ax2.set_ylabel('sin', color=color) # we already handled the x-label with ax1 ax2.plot(t, data2, color=color) ax2.tick_params(axis='y', labelcolor=color) fig.tight_layout() # otherwise the right y-label is slightly clipped plt.show()
De aqui .
fuente