使用matplotlib对齐两个y轴刻度线时出现问题

时间:2014-02-21 20:04:46

标签: python matplotlib

我试图使用python和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轴标记是偏移的。

为了防止这个问题,我缺少什么?

谢谢!

1 个答案:

答案 0 :(得分:2)

两个y轴没有相同的限制:在一种情况下,您在自动范围计算中使用相同的较低值,而在另一种情况下则不会。如果你用另一个定义一个yaxis范围,我认为你实现了你想要的目标:

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

(如果你没有明确设置ax2 yticks,那么如果你在交互模式下超出原始范围,那么滴答仍会被渲染。)

y tick positions corresponding on each side