【问题标题】:How to replace old graph from Matplotlib with a new one - Python如何用新图替换 Matplotlib 中的旧图 - Python
【发布时间】:2021-04-20 20:02:35
【问题描述】:

晚上好,

我编写了一个函数,它从名为“datenplot”的数据集创建 matplotlib 图。每次我通过 TKinter GUI 中的按钮调用该函数时,都会在前一个绘图下添加一个新绘图。一旦我从按钮调用该函数,我希望将旧情节替换为新情节,但目前我对此无能为力。

这是代码:

def grafik(uebergebene_daten):
    datenplot = uebergebene_daten

    fig = Figure(figsize=(10, 4), dpi=100)

    fig.add_subplot(111).plot((datenplot[1]), (datenplot[0]))

    canvas1 = FigureCanvasTkAgg(fig, master = root)
    canvas1.draw()
    canvas1.get_tk_widget().pack(side=tk.TOP, fill=tk.NONE, expand=0)
    time.sleep(1)

问候和感谢!

PS:我是新手,这是我的第一个问题,我还是编程初学者。

【问题讨论】:

    标签: python python-3.x matplotlib user-interface tkinter


    【解决方案1】:

    最快的方法可能是使用canvas1.get_tk_widget().destroy() 销毁画布本身。另外请注意,使用time.sleep() 可能会使您的GUI 无响应,因此我建议您使用tkinter 提供的after() 方法。

    这是一个例子:

    from tkinter import *
    from matplotlib.figure import Figure 
    from matplotlib.backends.backend_tkagg import (FigureCanvasTkAgg, 
    NavigationToolbar2Tk)
    
    def grafik(uebergebene_daten=(10, 10, 10, 10)):
        global canvas1
    
        if canvas1:
            canvas1.get_tk_widget().destroy()
        
        datenplot = uebergebene_daten
    
        fig = Figure(figsize=(10, 4), dpi=100)
        plot1 = fig.add_subplot(111) 
    
        canvas1 = FigureCanvasTkAgg(fig, master = window)
        canvas1.draw()
        canvas1.get_tk_widget().pack(side=TOP, fill=NONE, expand=0)
        window.after(1000, None)
    
    
    window = Tk() 
    
    canvas1 = None
    
    # setting the title 
    window.title('Plotting in Tkinter') 
    
    # dimensions of the main window 
    window.geometry("700x700") 
    
    
    # button that displays the plot 
    plot_button = Button(master = window, command = grafik, height = 2, width = 10, text = "Plot") 
    # place the button 
    plot_button.pack() 
    
    # run the gui 
    window.mainloop()
    

    【讨论】:

      猜你喜欢
      • 2016-03-18
      • 2022-07-31
      • 2017-06-28
      • 2019-02-26
      • 2016-11-14
      • 2017-07-07
      • 2022-11-17
      • 1970-01-01
      相关资源
      最近更新 更多