Matplotlib/Pyplot: 如何放大子图?

我有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) ,但我不知道如何判断在任何一个子图上请求了哪个缩放,以及如何在其他两个子图上复制它。

我怀疑我已经掌握了所有的线索,只需要最后一条珍贵的线索..。

- 是的

61276 次浏览

The easiest way to do this is by using the sharex and/or sharey keywords when creating the axes:

from matplotlib import pyplot as plt


ax1 = plt.subplot(2,1,1)
ax1.plot(...)
ax2 = plt.subplot(2,1,2, sharex=ax1)
ax2.plot(...)

Interactively this works on separate axes

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

You can also do this with plt.subplots, if that's your style.

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