在 Matplotlib 中动态更新绘图而不需要完全重绘
从串行端口收集数据并绘制它时,与常见更新相关的效率低下方法。清除并重新绘制整个绘图或使用定时动画可能不切实际或会导致延迟。本文提出了一种替代方法,仅在收到新数据时才允许增量绘图更新。
增量绘图更新
Matplotlib 提供了多种动画技术,包括Func动画函数。此功能可以使特定功能随时间变化的动画。在我们的例子中,我们可以使用这个函数来动画数据获取过程。
实现更新函数
动画方法涉及修改绘制的对象。我们可以通过将新数据点附加到现有数据点来简单地扩展数据属性,而不是清除屏幕或图形。下面是执行此操作的示例函数:
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 函数即可。这将逐步更新绘图,而不会产生重新绘制整个图形的开销。
以上是如何在不完全重绘的情况下动态更新 Matplotlib 图?的详细内容。更多信息请关注PHP中文网其他相关文章!