我遇到的问题可以描述如下: 两个不同的数据集有两个不同的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()
基本上我需要做的(我认为)是在同一个图上有两个轴,完全重叠,并有两个滚动条。
非常感谢任何帮助。
对于任何英语错误,ESL
抱歉答案 0 :(得分:3)
这是我可以使用两个随机数据集的基本示例,您可以在同一个图上独立地改变两个数据集的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()
您可能需要更改update
函数以适合您的实际数据(我的不同于OP中列出的数据)。
如果您对具有相同的x轴值感兴趣但想要独立地改变每个图的y轴位置,则可以使用ax2 = ax1.twiny()
并相应地更改更新函数(类似{ {1}})。