好的,所以我的一般问题是我有很多数据集,有些好,有些不好。我想绘制它们然后使用CheckButtons小部件来选择数据集。然后,我将对这些数据集进行平均,然后返回它们以进一步处理,并调用下一个数据加载。
基本上我有2个可调用g
和f
的图表,其中一个图表有两个轴(数据将被平均),第二个图表显示当前所选复选框的平均值。然而,我需要暂停代码,直到我对数据选择感到满意,并且一直尝试使用matplotlib按钮来停止并返回当前平均值。这就是我在努力的地方
s1,s2=Call.AVERAGE() #return the average of the checked lines
av1,=AX1.plot(x,s1)
av2,=AX1.plot(x,s2)
def func(label):
if Call.D[label]==1: #values with a D[label]==1 are averaged, 0 are ignored
Call.D[label]=0
elif Call.D[label]==0:
Call.D[label]=1
# every time a check box is changed the new average is calculated and plotted
s1,s2=Call.AVERAGE()
av1.set_ydata(s1)
av2.set_ydata(s2)
f.canvas.draw()
def end(event):
return #from this and outer function...
##code for check buttons
rax = g.add_axes([0.05, 0.3, 0.1, 0.3])
aq=append(Call.S1.keys(),Call.S2.keys())
check = CheckButtons(rax, aq, [True]*len(aq))
check.on_clicked(func)
##code for exit/save button
SAVE = f.add_axes([0.75, 0.02, 0.05, 0.025])
Sbutton = Button(SAVE, 'save')
Sbutton.on_clicked(end)
show()
return s1,s2 #only return from here after 'save' is clicked
只有当我对我的复选框选项感到满意并且点击了“保存”按钮时,我才想从此返回。
我在返回之前在代码末尾尝试了while
循环,但随后出现了数字但没有轴/数据/按钮。
希望这有意义,因为它是从我的代码中间粘贴的。感觉就像我错过了一个简单的解决方案。
答案 0 :(得分:0)
如果没有在ioff()
show()
上进行交互式绘图,就会暂停,直到数字关闭,然后在def end():
中,我可以致电close(f)
和close(f)
然后继续使用代码返回s1和s2的当前值。