Matplotlib/图形库:如何一起缩放子图?

s6fujrry  于 2023-03-19  发布在  其他
关注(0)|答案(4)|浏览(182)

我想一起缩放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),但我不知道如何判断在任何一个子图上请求了什么缩放,以及如何在其他两个子图上复制它。
我怀疑我已经拥有了所有的碎片,只需要最后一条珍贵的线索...

  • 鲍勃·C
yws3nbqq

yws3nbqq1#

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

fivyi3re2#

如果您喜欢,也可以使用plt.subplots来完成此操作。

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

cetgtptt3#

import matplotlib.pyplot as plt
def linkx():
  # Get current figure
  axes = plt.gcf().axes 
  parent = axes[0]
  # Loop over other axes and link to first axes
  for i in range(1,len(axes)): 
    axes[i].sharex(parent)
egmofgnx

egmofgnx4#

这在单独的轴上交互工作

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

相关问题