我有两个数组来存储数据:一个存时间,另一个存数值。当我收集了1000个点,就会触发信号并将它们绘制在图上(x轴为时间,y轴为数值)。
我需要在同一张图上保留之前的绘制结果,但只保留合适的数量以避免减慢进程。例如,我想在图上保留10000个点。matplotlib中的交互式绘图可以正常工作,但我不知道如何删除前面的点,并且速度非常慢。 我研究过matplotlib.animation, 但它似乎只是重复相同的绘图,而无法真正地更新。
我真的在寻找一种轻量级的解决方案,以避免任何减慢。
由于我需要长时间采集数据,所以每次循环都会清空输入数据(第1001个点存储在第一行等等)。
这是目前我的代码,但它会在图上保留所有的点:
import matplotlib.pyplot as plt
def init_plot():
plt.ion()
plt.figure()
plt.title("Test d\'acqusition", fontsize=20)
plt.xlabel("Temps(s)", fontsize=20)
plt.ylabel("Tension (V)", fontsize=20)
plt.grid(True)
def continuous_plot(x, fx, x2, fx2):
plt.plot(x, fx, 'bo', markersize=1)
plt.plot(x2, fx2, 'ro', markersize=1)
plt.draw()
我调用init函数一次,而continuous_plot在一个进程中运行,每当我有1000个点在我的数组中时,便被调用。