Я хочу обновить график matplotlib в графическом интерфейсе tkinter. Я попытался сделать это в следующем примере кода.update matplotlib plot in tkinter GUI
import matplotlib
matplotlib.use('TkAgg')
import numpy as np
import matplotlib.pyplot as plt
from matplotlib.backends.backend_tkagg import FigureCanvasTkAgg, NavigationToolbar2TkAgg
from matplotlib.figure import Figure
import tkinter as tk
import tkinter.ttk as ttk
import sys
class Application(tk.Frame):
def __init__(self, master=None):
tk.Frame.__init__(self,master)
self.createWidgets()
def createWidgets(self):
fig=plt.figure(figsize=(8,8))
ax=fig.add_axes([0.1,0.1,0.8,0.8],polar=True)
canvas=FigureCanvasTkAgg(fig,master=root)
canvas.get_tk_widget().grid(row=0,column=1)
canvas.show()
self.plotbutton=tk.Button(master=root, text="plot", command=self.plot)
self.plotbutton.grid(row=0,column=0)
def plot(self):
for line in sys.stdout: #infinite loop, reads data of a subprocess
theta=line[1]
r=line[2]
ax.plot(theta,r,linestyle="None",maker='o')
plt.show(block=False)
plt.pause(0.001)
plt.cla()
#here set axes
root=tk.Tk()
app=Application(master=root)
app.mainloop()
В настоящий момент проблема заключается в том, что объект топора не известен в функции графика. Если я попробую сюжет (self, canvas, ax), GUI не откроется. Только фигура, которая отображает данные.
Я хочу отобразить данные на рисунке, который отображается в графическом интерфейсе. По крайней мере, частота обновления около 3-5 Гц. Потому что я - абсолютный новичок, это решение кода, вероятно, не самый лучший способ сделать это. Поэтому я был бы счастлив, если бы кто-то мог показать мне более разумное решение.
Спасибо!