Как создать livegraph из изображения в matplotlib - PullRequest
1 голос
/ 18 февраля 2020

Позвольте мне сначала объяснить, что я пытаюсь сделать

Я хочу 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()

В основном мне нужно

  • Хорошая презентация
  • сюжет в реальном времени

Я испробовал все, что мог; Любая помощь будет принята с благодарностью ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...