Matplotlib / Pyplot:如何将子图一起缩放?

我将三轴加速度计时间序列数据(t,x,y,z)绘制在单独的子图中,我想缩放在一起。 也就是说,当我使用“缩放到矩形”工具在一个情节,当我释放鼠标所有3个图放大在一起。

以前,我只是使用不同的颜色在一个绘图上绘制了所有3个坐标轴。 但是这只对less量数据有用:我有超过200万个数据点,所以最后一个坐标轴隐藏了另外两个数据点。 因此需要单独的子图。

我知道我可以捕获matplotlib / pyplot鼠标事件(http://matplotlib.sourceforge.net/users/event_handling.html),我知道我可以捕获其他事件(http://matplotlib.sourceforge.net/api/backend_bases_api .html#matplotlib.backend_bases.ResizeEvent),但我不知道如何告诉在任何一个子图上请求的缩放比例,以及如何在其他两个子图上复制它。

我怀疑我拥有所有的东西,只需要最后一条宝贵的线索。

-BobC

最简单的方法是在创build轴时使用sharex和/或sharey关键字:

 from matplotlib import pyplot as plt ax1 = plt.subplot(2,1,1) ax1.plot(...) ax2 = plt.subplot(2,1,2, sharex=ax1) ax2.plot(...) 

如果这是你的风格,你也可以用plt.subplots来做到这一点。

 fig, ax = plt.subplots(3, 1, sharex=True, sharey=True) 

以交互方式在单独的轴上工作

 for ax in fig.axes: ax.set_xlim(0, 50) fig.draw()