2011-10-05 13 views
7

enter image description hereControlar el rastreador cuando se utiliza Twinx

El rastreador en la esquina inferior derecha (destacado en rojo) informa de los valores de y en relación con el eje y de la derecha.

¿Cómo puedo hacer que el rastreador informe los valores y en relación con el eje y de la izquierda?

import matplotlib.pyplot as plt 
import numpy as np 

np.random.seed(6) 
numdata = 100 
t = np.linspace(0.05, 0.11, numdata) 
y1 = np.cumsum(np.random.random(numdata) - 0.5) * 40000 
y2 = np.cumsum(np.random.random(numdata) - 0.5) * 0.002 

fig = plt.figure() 

ax1 = fig.add_subplot(111) 
ax2 = ax1.twinx() 

ax1.plot(t, y1, 'r-', label='y1') 
ax2.plot(t, y2, 'g-', label='y2') 

ax1.legend() 
plt.show() 

sé intercambio de y1 con y2 hará que los valores de y1 informe de seguimiento, pero esto también coloca el y1 las marcas de división en el lado derecho, que no es lo que quiero que suceda.

ax1.plot(t, y2, 'g-', label='y2') 
ax2.plot(t, y1, 'r-', label='y1') 

Respuesta

3

Ah, encontrado: ax.yaxis.set_ticks_position("right"). En lugar de intentar "controlar el rastreador", puede cambiar la ubicación de los ejes y.

ax1.yaxis.set_ticks_position("right") 
ax2.yaxis.set_ticks_position("left") 

ax1.plot(t, y2, 'g-', label='y1') 
ax2.plot(t, y1, 'r-', label='y2') 

yo sepa, el rastreador sigue siempre ax2 cuando se utiliza twinx.

enter image description here

3

Tenga en cuenta que si crea un ax3= ax1.twiny() ejes después de AX1 y ax2, el rastreador va a ax3 y se han vuelto a informar que los valores y1.

import matplotlib.pyplot as plt 
import numpy as np 

np.random.seed(6) 
numdata = 100 
t = np.linspace(0.05, 0.11, numdata) 
y1 = np.cumsum(np.random.random(numdata) - 0.5) * 40000 
y2 = np.cumsum(np.random.random(numdata) - 0.5) * 0.002 

fig = plt.figure() 

ax1 = fig.add_subplot(111) 
ax2 = ax1.twinx() 

ax1.plot(t, y1, 'r-', label='y1') 
ax2.plot(t, y2, 'g-', label='y2') 

ax1.legend() 
ax3 = ax1.twiny() 
ax3.set_xticks([]) 
plt.show() 
Cuestiones relacionadas