我正在尝试编写一个程序,通过单击“上一个”和“下一个”按钮在信号之间切换,同时可以选择并保存部分曲线。这是我到目前为止所得到的:
%matplotlib tk
itera = list(range(1, 100))
fig, ax = plt.subplots()
plt.grid()
plt.subplots_adjust(bottom=0.2)
t = time_axis
s = signal[0] # first signal in the plot
l, = plt.plot(time, s, lw=2) # first plot
plt.xlabel('Time (s)')
plt.ylabel('Acceleration')
plt.title('Plot batches')
############### Buttons widget ####################
class Index(object):
ind = 0
def next(self, event):
self.ind += 1
i = self.ind % len(itera)
ydata = signal[i]
l.set_ydata(ydata)
plt.draw()
def prev(self, event):
self.ind -= 1
i = self.ind % len(itera)
ydata = signal[i]
l.set_ydata(ydata)
plt.draw()
callback = Index()
axprev = plt.axes([0.7, 0.05, 0.1, 0.075])
axnext = plt.axes([0.81, 0.05, 0.1, 0.075])
bnext = Button(axnext, 'Next')
bnext.on_clicked(callback.next)
bprev = Button(axprev, 'Previous')
bprev.on_clicked(callback.prev)
############### Select part of the port ####################
def onselect(xmin, xmax):
x = time_axis
y = signal[callback.ind % len(itera)]
indmin, indmax = np.searchsorted(x, (xmin, xmax))
indmax = min(len(x) - 1, indmax)
thisx = x[indmin:indmax]
thisy = y[indmin:indmax]
# save
np.savetxt("text", np.c_[thisx, thisy])
def fun_with_spanselector_inside():
span = SpanSelector(ax, onselect, 'horizontal', useblit=True,
rectprops=dict(alpha=0.5, facecolor='red') )
return span
span = fun_with_spanselector_inside()
plt.show()
目前,我不知道如何在onselect函数中根据已按下的按钮更新y信号。
有什么建议吗?
谢谢
更新:
我已经更新了代码并解决了上面的问题。 现在,我不知道如何选择同一图的多个部分并将它们保存到不同的文件中。目前,文件“文本”每次都会更新,每次选择绘图的新区域时都会丢失数据。
有人可以帮我吗?
我是python的新手,尤其是matplotlib的用户,对不起,我问的是一些基本知识。
谢谢