Python 如何在实时打印实时数据时使用NumPy阵列?

Python 如何在实时打印实时数据时使用NumPy阵列?,python,numpy,matplotlib,animation,plot,Python,Numpy,Matplotlib,Animation,Plot,如何在实时构建绘图期间正确使用numpy数组,我的意思是,如果我使用这些数组,我将值推入其中,除了从(0;0)开始的线和当前绘图点上的点之外,一切都很好,换句话说,第一个端点保持稳定,但第二个端点改变了它的位置。这个怎么办?另外,我不知道如何在animation()处通过引用传递参数 在绘制plt.plot(time_x,key_y)的行中,因为time_x和key_y被实例化为一个零数组,所以总是从上次生成的点到[0,0]位置绘制线(直到生成cnt=4999的点) e、 g.如果在数据生成循环

如何在实时构建绘图期间正确使用numpy数组,我的意思是,如果我使用这些数组,我将值推入其中,除了从(0;0)开始的线和当前绘图点上的点之外,一切都很好,换句话说,第一个端点保持稳定,但第二个端点改变了它的位置。这个怎么办?另外,我不知道如何在animation()处通过引用传递参数


在绘制plt.plot(time_x,key_y)的行中,因为
time_x
key_y
被实例化为一个零数组,所以总是从上次生成的点到[0,0]位置绘制线(直到生成
cnt=4999
的点)

e、 g.如果在数据生成循环中
cnt=2
,它可能看起来像:

time_x = [  0.0, 1.0,  2.0, 0.0, 0.0, 0.0, ...]
key_y  = [100.0, 1.0, 52.0, 0.0, 0.0, 0.0, ...]
这意味着你也画了很多零

我认为您只想绘制到
cnt
(您已经为其生成了数据),即
plt.plot(time\u x[:cnt],key\u y[:cnt])
,或者在您的示例中:

将numpy导入为np
从随机导入randint
将matplotlib.pyplot作为plt导入
从matplotlib.animation导入FuncAnimation
s='
字母=[s[randint(0,len(s)-1)],表示范围(5000)]
时间=[i代表范围内的i(5000)]
示例=[randint(0,100)表示范围(5000)内的uu]
时间x=np.0(len(时间))
key_y=np.zero(len(time))
def动画(cnt、参数1、参数2):
时间x[cnt]=时间[cnt]
key_y[cnt]=示例[cnt]
打印(cnt,time_x[cnt],key_y[cnt],f'Extra参数:{param_1},{param_2})
plt.cla()
plt.绘图(时间x[:cnt],键y[:cnt])
额外参数=('p_1','p_2')
ani=FuncAnimation(plt.gcf(),animate,interval=3000,fargs=extra_参数)
plt.show()
传递给animate(
i
)的第一个参数已经是
global
cnt
用于在原始代码中执行,因此您可以直接替换它。如果要按照建议传入特定的
cnt
值,可以尝试添加
frames
参数

如果要传入其他参数,可以使用
fargs
参数。您可以将额外数据作为元组传入,如
extra_params
所示


如果您想做更复杂的事情,我将使用python类来存储状态,如图所示。

谢谢,这很有帮助。可以通过链接将cnt传递到动画中吗?@MrFilonxik我已经编辑了我的答案,如果你有其他意思,请告诉我!
time_x = [  0.0, 1.0,  2.0, 0.0, 0.0, 0.0, ...]
key_y  = [100.0, 1.0, 52.0, 0.0, 0.0, 0.0, ...]