2014-02-21 262 views
1

我正在嘗試使用python和matplotlib來對齊兩組分離的y軸,並且我正在運行到行爲不明的行爲。這是我到目前爲止的代碼:用matplotlib對齊兩個y軸刻度時遇到的問題

import matplotlib.pyplot as mplot 
import numpy as np 

fig = mplot.figure() 
ax1 = fig.add_subplot(111) 

t = np.arange(1, 4, 1) 
s1 = np.exp(t) 

ax2 = ax1.twinx()  
ax1.semilogx(t, s1) 
ax2.set_yticks(2*ax1.get_yticks()) 
mplot.show() 

這將產生預期的結果(從http://postimg.org/image/qowrjnnr5/): good result

然而,改變T的定義

t = np.arrange(1, 3, 1) 

產生的結果(http://postimg.org/image/swanojt0b ):

bad result

您可以在其中看到右側的y軸剔除偏移。

我爲了防止這個問題丟失了什麼?

謝謝!

回答

2

這兩個y軸沒有相同的限制:在一種情況下,您在自動範圍計算中僥倖使用相同的較低值,而在另一種情況下,您不會。如果你在其他方面定義了一個Y軸的範圍,我想你實現你想要的:

lim1 = ax1.get_ylim() 
lim2 = (lim1[0]*2, lim1[1] *2) 
ax2.set_ylim(lim2) 

(如果你不明確設置AX2 yticks然後蜱仍然會得到渲染,如果你超越交互模式下的原始範圍)。

y tick positions corresponding on each side

+0

完美。謝謝! – Sergiy