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

时间:2010-11-17 00:58:53

标签: zoom matplotlib

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

以前,我只是使用不同的颜色在单个地块上绘制所有3个轴。但这仅适用于少量数据:我有超过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

3 个答案:

答案 0 :(得分:92)

最简单的方法是在创建轴时使用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(...)

答案 1 :(得分:13)

您也可以使用if(window.location.search){ // if the url to reload has GET vars in the url window.location.href = window.location.protocol +'//'+ window.location.host + window.location.pathname + window.location.search; } else{ // else we are delaing with a POST request window.location.href = window.location.protocol +'//'+ window.location.host + window.location.pathname; } 执行此操作,如果这是您的风格。

plt.subplots

答案 2 :(得分:0)

交互式地,这适用于不同的轴

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