gpt4 book ai didi

python - 在 matplotlib 中动态更新绘图

转载 作者:IT老高 更新时间:2023-10-28 21:08:15 26 4
gpt4 key购买 nike

我正在用 Python 制作一个应用程序,它从串行端口收集数据并绘制收集到的数据与到达时间的关系图。数据到达的时间是不确定的。我希望在收到数据时更新绘图。我搜索了如何做到这一点,发现了两种方法:

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

我不喜欢第一个,因为程序运行并收集数据很长时间(例如一天),重绘情节会很慢。第二个也不可取,因为数据的到达时间不确定,我希望图仅在收到数据时更新。

有没有一种方法可以让我只在收到数据时才添加更多点来更新绘图?

最佳答案

Is there a way in which I can update the plot just by adding more point[s] to it...

matplotlib 中有多种动画数据的方法,具体取决于您拥有的版本。你见过matplotlib cookbook例子?另外,查看更现代的 animation examples在 matplotlib 文档中。最后,animation API定义一个函数 FuncAnimation它及时为函数设置动画。此函数可能只是您用来获取数据的函数。

每个方法基本上都设置了被绘制对象的data属性,所以不需要清除屏幕或图形。 data 属性可以简单地扩展,因此您可以保留以前的点并继续添加到您的线条(或图像或您正在绘制的任何内容)。

鉴于您说您的数据到达时间不确定,您最好的选择可能只是执行以下操作:

import matplotlib.pyplot as plt
import 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

关于python - 在 matplotlib 中动态更新绘图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10944621/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com