【问题标题】:Matplotlib/Pyplot: How to zoom subplots together?Matplotlib/Pyplot:如何将子图缩放在一起?
【发布时间】:2025-11-27 01:30:01
【问题描述】:

我在单独的子图中绘制了 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

【问题讨论】:

标签: zooming matplotlib


【解决方案1】:

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

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

      【解决方案3】:

      以交互方式在不同的轴上工作

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

      【讨论】:

        最近更新 更多