Matplotlib中的动态更新图

Matplotlib中的动态更新图

我正在用Python开发一个应用程序,它从串口收集数据,并在到达时间绘制收集到的数据的图表。数据的到达时间是不确定的。我希望在收到数据时更新该地块。我搜索了如何做到这一点,并找到了两种方法:

  1. 清除情节,并重新绘制与所有点的情节。
  2. 通过在特定间隔后更改情节来动画情节。

我不喜欢第一个,因为程序运行和收集数据很长时间(例如一天),重绘的情节将非常缓慢。第二种方法也不可取,因为数据到达的时间是不确定的,我希望只有在收到数据时,才能更新图。

是否有一种方法,我可以通过添加更多的点,只有在收到数据的情况下,才能更新地块?


千万里不及你
浏览 2804回答 3
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.
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python