繁体   English   中英

当单击新的单选按钮 PySimpleGUI 时,如何清除 Matplotlib 子图画布图形?

[英]How to clear a Matplotlib subplot canvas figure when a new radio button is clicked PySimpleGUI?

我有一个带有多个单选按钮的 GUI。 每次更改按钮时 - 我都想创建一个新图形,并为其创建了一个函数。 我的问题是,当我单击另一个单选按钮时,会显示第一个图形和第二个图形。 我想清除第一个图形,以便在单击相关按钮时只显示第二个图形。 请有人可以帮助为此创建一个函数吗?

我下面的函数给了我一个错误。



def draw_figure(canvas, figure):
    figure_canvas_agg = FigureCanvasTkAgg(figure, canvas)
    figure_canvas_agg.draw()
    figure_canvas_agg.get_tk_widget().pack(side='top', fill='both', expand=1)
    return figure_canvas_agg

def delete_figure_agg(figure_agg):
    figure_agg.get_tk_widget().forget()
    plt.close('all') 
 
 layout=[          
[sg.Radio('1',key= 'RADIO1',group_id='1', enable_events = True,default=False, size=(10,1)),
          sg.Radio('2t', key= 'RADIO2',group_id='1',enable_events = True, default=False, size=(10,1)),
           sg.Radio('3', key='RADIO3',group_id='1',enable_events = True, default=False, size=(12,1)),
           sg.Radio('4', key='RADIO4', group_id='1',enable_events = True,default=False, size=(12,1))],
           [sg.Canvas(key='-CANVAS-',size=(40,40))]]

def subplot_graph(val1, val2,val3, val4):
    fig = matplotlib.figure.Figure(figsize=(4, 4), dpi=75)
    fig.add_subplot(111).bar(val1, val2,color= 'blue' ,width=0.7)
    fig.add_subplot(111).twinx()
    fig.add_subplot(111).plot(val1,val3))
    return fig

谢谢

Demo_Matplotlib_Browser 中有一个这样做的例子 这个演示显示了多个图,一个接一个,这是您检查那里以查看该代码如何完成的线索。

该演示中使用的技术是这个函数:

def delete_figure_agg(figure_agg):
    figure_agg.get_tk_widget().forget()
    plt.close('all')

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM