我试图使用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/):
但是,将t的定义更改为
t = np.arrange(1, 3, 1)
生成结果(http://postimg.org/image/swanojt0b):
您可以看到右侧的y轴标记是偏移的。
为了防止这个问题,我缺少什么?
谢谢!
答案 0 :(得分:2)
两个y轴没有相同的限制:在一种情况下,您在自动范围计算中使用相同的较低值,而在另一种情况下则不会。如果你用另一个定义一个yaxis范围,我认为你实现了你想要的目标:
lim1 = ax1.get_ylim()
lim2 = (lim1[0]*2, lim1[1] *2)
ax2.set_ylim(lim2)
(如果你没有明确设置ax2 yticks,那么如果你在交互模式下超出原始范围,那么滴答仍会被渲染。)