简体   繁体   English

Python tkinter 上 matplotlib 如何更新?

[英]Python tkinter on matplotlib How update?

I use matplotlib in tkinter.我在 tkinter 中使用 matplotlib。 I want to update the matplotlib status to a new status as function, how can i solve it?我想将 matplotlib 状态更新为新状态 function,我该如何解决?

import matplotlib.pyplot as plt
import numpy as np
from matplotlib.backends.backend_tkagg import (FigureCanvasTkAgg, NavigationToolbar2Tk)

window = tk.Tk()

def change():
    ss =  np.random.randint(100)
    ss1 =  np.random.randint(100)
    ss2 =  np.random.randint(100)
    x = ['Col A', 'Col B', 'Col C']
    y = [ss,ss1,ss2]
    fig = plt.figure(figsize=(4, 5))
    plt.bar(x=x, height=y)

    
    plt.xticks(x, rotation=90)
    canvas = FigureCanvasTkAgg(fig, master=window)
    canvas.draw()
    
btn = tk.Label(window, text='A simple plot')
btn.grid(row=0, column=0, padx=20, pady=10)

x = ['Col A', 'Col B', 'Col C']
y = [50, 20, 80]

fig = plt.figure(figsize=(4, 5))
plt.bar(x=x, height=y)


plt.xticks(x, rotation=90)


canvas = FigureCanvasTkAgg(fig, master=window)
canvas.draw()
canvas.get_tk_widget().grid(row=1, column=0, ipadx=40, ipady=20)

toolbarFrame = tk.Frame(master=window)
toolbarFrame.grid(row=2,column=0)
toolbar = NavigationToolbar2Tk(canvas, toolbarFrame)
button = tk.Button(text='change',command = change)
button.grid(row= 3,column =0)

window.mainloop()

output When this code is executed, when the button is pressed, the graph screen does not change, and when the program ends, the graphs are executed. output执行此代码时,按下按钮时,图形画面不变化,程序结束时,执行图形。

You don't need to create new figure, just update current figure:您不需要创建新图形,只需更新当前图形:

def change():
    ss =  np.random.randint(100)
    ss1 =  np.random.randint(100)
    ss2 =  np.random.randint(100)
    x = ['Col A', 'Col B', 'Col C']
    y = [ss,ss1,ss2]
    plt.clf()  # clear current figure
    plt.bar(x=x, height=y)  # plot the graph
    plt.xticks(x, rotation=90)
    canvas.draw()  # refresh plot

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

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