javascript - 如何从 matplotlib 中的图像创建实时图
问题描述
让我首先解释一下我要做什么
我想要 tkinter GUI 屏幕中的 8 个实时图表。这些图表的数据基本上来自一些 USB 端口设备(其代码工作得非常好)。图表应每 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()
基本上我需要的是
- 一个很好的介绍
- 实时绘图
我已经尽力了;任何帮助将不胜感激...
解决方案
推荐阅读
- c# - 从 C# 将数据传递给 Json
- python - 如何使用 python 函数节点在节点红色中发送打印('something')?
- swift - Swift,AVAudioRecorder:错误 317:ca_debug_string:inPropertyData == NULL
- swift3 - 如何在特定位置快速呈现 ViewController 模式 4
- c# - 将 .csv(ANSI) 转换为 .csv(UTF-8)
- android - 在不使用 @SuppressWarnings 的情况下解决 lint 已弃用的警告
- c# - 在异步任务中捕获异常
- xamarin.forms - FontAwesome 标签渲染器 iOS 麻烦
- javascript - 每次创建新帖子时如何取消选中自定义元框中的复选框值?
- javascript - array.find() 返回项目和索引