为了账号安全,请及时绑定邮箱和手机立即绑定

Matplotlib中的动态更新图

Matplotlib中的动态更新图

千万里不及你 2019-07-04 15:25:52
Matplotlib中的动态更新图我正在用Python开发一个应用程序,它从串口收集数据,并在到达时间绘制收集到的数据的图表。数据的到达时间是不确定的。我希望在收到数据时更新该地块。我搜索了如何做到这一点,并找到了两种方法:清除情节,并重新绘制与所有点的情节。通过在特定间隔后更改情节来动画情节。我不喜欢第一个,因为程序运行和收集数据很长时间(例如一天),重绘的情节将非常缓慢。第二种方法也不可取,因为数据到达的时间是不确定的,我希望只有在收到数据时,才能更新图。是否有一种方法,我可以通过添加更多的点,只有在收到数据的情况下,才能更新地块?
查看完整描述

3 回答

?
倚天杖

TA贡献1828条经验 获得超3个赞

有什么方法,我可以更新的情节,只需增加更多的点[s].

根据您的版本,matplotlib中有多种动画数据的方法。你见过Matplotlib食谱举个例子?另外,看看更现代的。动画实例在matplotlib文档中。最后,动画API定义函数功能动画在时间上激活一个功能。这个函数可能就是用来获取数据的函数。

每个方法基本上设置data属性,因此不需要清除屏幕或图形。这个data属性可以简单地进行扩展,因此您可以保留前面的点,并继续添加到您的线条(或图像或您正在绘制的任何东西)中。

考虑到您说您的数据到达时间不确定,您最好的选择可能是这样做:

import matplotlib.pyplot as pltimport numpy

hl, = plt.plot([], [])def update_line(hl, new_data):
    hl.set_xdata(numpy.append(hl.get_xdata(), new_data))
    hl.set_ydata(numpy.append(hl.get_ydata(), new_data))
    plt.draw()

然后当您从串口接收数据时,只需调用update_line.


查看完整回答
反对 回复 2019-07-04
  • 3 回答
  • 0 关注
  • 2803 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信