gpt4 book ai didi

python - 叠加图并独立滚动 matplotlib

转载 作者:行者123 更新时间:2023-11-28 16:24:48 27 4
gpt4 key购买 nike

我遇到的问题可以描述如下:具有两个不同 x 和 y 轴的两个不同数据集(我们称它们为 t1、y1、t2 和 y2),t1 和 t2 可以相同。

我需要做的是将两个图重叠/绘制在一起(即,不在子图中,或者在大小相同且彼此完全重叠的子图中)并能够独立滚动每个轴。我的目标是能够直观地将它们排列起来,以便我可以比较它们。

我所拥有的是以下内容:

import numpy as np
from matplotlib import pyplot as plt
from matplotlib.widgets import Slider
dArray = np.genfromtxt("t5_24.csv",delimiter=',');
y1 = dArray[:,2];
y2 = dArray[:,3];
fig, ax = plt.subplots()
plt.subplots_adjust(bottom=0.25)
t = np.linspace(0,len(temp1),len(temp1))
p1 = plt.plot(t,y1,t,y2)


axcolor = 'lightgoldenrodyellow'
axpos = plt.axes([0.2, 0.1, 0.65, 0.03], axisbg=axcolor)

spos = Slider(axpos, 'Pos', 0.1, len(t))

def update(val):
pos = spos.val
# ax.xlim(pos,pos+30*60)
ax.axis([pos,pos+120*60,0,500])
fig.canvas.draw_idle()

spos.on_changed(update)

plt.show()

取自 this stackoverflow post

本质上,我需要做的(我认为)是在同一个图形上有两个完全重叠的轴和两个滚动条。

非常感谢任何帮助。

对于任何英文错误,ESL 深表歉意

最佳答案

这是一个基本示例,我可以使用两个随机数据集,您可以在同一图上独立地改变两个数据集的 x 轴位置。

import matplotlib.pyplot as plt
from matplotlib.widgets import Slider

t = np.linspace(0, 10, 101)
y1, y2 = np.random.rand(2, 101)

fig, ax1 = plt.subplots()
ax2 = ax1.twiny()

fig.subplots_adjust(bottom=0.25)

ax1_pos = fig.add_axes([0.2, 0.1, 0.65, 0.03])
ax2_pos = fig.add_axes([0.2, 0.05, 0.65, 0.03])

s1 = Slider(ax1_pos, 'Pos1', 0.1, len(x))
s2 = Slider(ax2_pos, 'Pos2', 0.1, len(x))

def update1(v):
pos = s1.val
ax1.axis([pos,pos+2,0,1])
fig.canvas.draw_idle()

def update2(v):
pos = s2.val
ax2.axis([pos,pos+2,0,1])
fig.canvas.draw_idle()

s1.on_changed(update1)
s2.on_changed(update2)

ax1.plot(t, y1, 'b-')
ax2.plot(t, y2, 'r-')
plt.show()

结果如下: enter image description here

您可能需要更改 update 函数以适应您的实际数据(我的与 OP 中列出的不同)。

如果您对具有相同的 x 轴值感兴趣,但希望独立地改变每个图的 y 轴位置,您可以使用 ax2 = ax1.twiny() 和相应地更改更新函数(类似于 ax1.axis([xmin, xmax, pos, pos+2]))。

关于python - 叠加图并独立滚动 matplotlib,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37470835/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com