从matplotlib小部件返回结果

时间:2014-12-01 23:50:29

标签: python matplotlib widget

好的,所以我的一般问题是我有很多数据集,有些好,有些不好。我想绘制它们然后使用CheckButtons小部件来选择数据集。然后,我将对这些数据集进行平均,然后返回它们以进一步处理,并调用下一个数据加载。

基本上我有2个可调用gf的图表,其中一个图表有两个轴(数据将被平均),第二个图表显示当前所选复选框的平均值。然而,我需要暂停代码,直到我对数据选择感到满意,并且一直尝试使用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循环,但随后出现了数字但没有轴/数据/按钮。

希望这有意义,因为它是从我的代码中间粘贴的。感觉就像我错过了一个简单的解决方案。

1 个答案:

答案 0 :(得分:0)

如果没有在ioff() show()上进行交互式绘图,就会暂停,直到数字关闭,然后在def end():中,我可以致电close(f)close(f)然后继续使用代码返回s1和s2的当前值。