Позвольте мне сначала объяснить, что я пытаюсь сделать
Я хочу 8 графики в реальном времени на экране tkinter GUI. Данные этих графиков в основном поступают с какого-либо устройства с USB-портом (код, для которого работает абсолютно нормально). Графики должны сами обновляться sh каждую 1 секунду. Для этого я использовал модуль matplotlib.backends и модуль matplotlib.animation.
Но во время выполнения этого кода вывод выводит графики странным образом, и это тоже не в реальном времени
from matplotlib import style
import matplotlib.animation as animation
from matplotlib.figure import Figure
from matplotlib.backends.backend_tkagg import (FigureCanvasTkAgg,NavigationToolbar2Tk)
from tkinter import *
def getvalues():
myfile=open("sample.txt",'r').read()
tmp_list = myfile.split('\n')
xarr=[]
yarr=[]
for eachline in tmp_list:
if len(eachline)>1:
x,y=eachline.split(',')
xarr.append(int(x))
yarr.append(float(y))
return (xarr,yarr)
def animate(i):
x,y=getvalues()
canvas=[]
for i in range(4):
fig=Figure(figsize=(3,2),dpi=100)
plt = fig.add_subplot(4,2,i+1)
plt.plot(x,y, color="#0000FF")
plt.set_xlim(0, 50)
plt.set_ylim(0, 10)
#plt.legend(["Sensor " + repr(i + 1)])
canvas.append(FigureCanvasTkAgg(fig, animation_window))
canvas[i].draw()
canvas[i].get_tk_widget().pack(fill=BOTH,expand=True)
for i in range(4,8):
fig=Figure(figsize=(3,2),dpi=100)
plt = fig.add_subplot(4,2,i-3)
plt.plot(x,y,color="#0000FF")
plt.set_xlim(0, 50)
plt.set_ylim(0, 10)
#plt.legend(["Sensor " + repr(i + 1)])
canvas.append(FigureCanvasTkAgg(fig, animation_window))
canvas[i].draw()
canvas[i].get_tk_widget().pack(fill=BOTH,expand=True)
root=Tk()
root.title("testing...")
fig=Figure(figsize=(3,2),dpi=100)
animation_window = Toplevel(root)
animation_window.title("For Stackoverflow")
animate(0) #otherwise the plots won't show up
ani=animation.FuncAnimation(fig,animate,interval=1000)
root.mainloop()
В основном мне нужно
- Хорошая презентация
- сюжет в реальном времени
Я испробовал все, что мог; Любая помощь будет принята с благодарностью ...