2011-10-05 13 views
7

enter image description hereSterowanie śledzenia przy użyciu twinx

Tracker w prawym dolnym rogu (zaznaczone na czerwono) informuje wartości y w stosunku do osi Y na prawo.

W jaki sposób można uzyskać, aby moduł śledzący raportował wartości y względem osi Y po lewej stronie?

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

wiem swapping y1 z y2 dokona Y1 wartości raportu Tracker, ale kładzie również y1 znaków podziałki na prawej stronie, co nie jest to, co chcę się zdarzyć.

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

Odpowiedz

3

Ah, znaleziono: ax.yaxis.set_ticks_position("right"). Zamiast próbować "kontrolować tracker", możesz zamienić położenie osi 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') 

AFAIK, tracker zawsze następuje ax2 podczas korzystania twinx.

enter image description here

3

Należy pamiętać, że jeśli utworzyć ax3= ax1.twiny() osie po AX1 i AX2, tracker idzie AX3 a ty znowu raportowania wartości 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() 
Powiązane problemy