当前正在使用静态帧设置散点图的动画。有没有办法在移动的窗口上设置动画?

2024-06-17 13:45:24 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个格式为[2000][200,3]的数组,我正在创建一个动画散点图。2000是帧数,内部数组的格式[length, [x,y,inten]]是要分散的点。 因此,对于一个示例,单个帧将如下所示:

Array[0]=np.array([x_1,y_1,I_1],[x_2,y_2,I_2],...,[x_200,y_200,I_200])

所以我们有2000帧,每帧200点。这些点每200个被任意截断,实际上是连续的。所以我可以切实地将数组重塑为:

Array=np.array(np.array([x_1,y_1,I_1],[x_2,y_2,I_2],...,[x_400000,y_400000,I_400000])

这对我来说没问题。我知道怎么做。你知道吗

我的问题是,如何设置散点图的动画,使其自适应地在点之间移动,而不是显示200个点仓?下面的代码允许我用帧(1-200201-400401-600等)绘制一个动画散点图,但是结果不是很平滑。理想情况下,我想在每一点或至少每10点更新,例如帧(1-200,2-201,3-202等)或(1-200,11-210,21-200等)

numframes=len(Array)

plt.ion()
fig, ax = plt.subplots()

norm = plt.Normalize(Array[:][:,2].min(), Array[:][:,2].max())
sc = ax.scatter(Array[0][:,0], Array[0][:,1], c=Array[0][:,2], cmap=cm.hot, s=5)

plt.xlim(-40,40)
plt.ylim(0,200)
plt.draw()
for i in range(numframes):

    sc.set_offsets(np.c_[Array[i][:,0], Array[i][:,1]])
    sc.set_array(Array[i][:,2])
    print(i)
    plt.pause(0.1)

plt.ioff()
plt.show()

Tags: 示例格式np动画plt数组axarray
1条回答
网友
1楼 · 发布于 2024-06-17 13:45:24

下面的代码以给定的步长和200的窗口连续地遍历我的点数组,而不是每200离散地进行一次装箱。你知道吗

stepsize=10
NewArray=np.ravel(Array)
NewArray.reshape(2000*200,3)

plt.ion()
fig, ax = plt.subplots()
norm = plt.normalize(NewArray[:,2].min(), NewArray[:,2].max())
sc = ax.scatter(NewArray[0:200,0], NewArray[0:200,1], c=NewArray[0:200,2], cmap=cm.jet, s=5)
plt.xlim(-40,40)
plt.ylim(0,200)
plt.draw()
for i in range(len(NewArray//stepsize)-200):
    sc.set_offsets(np.c_[NewArray[(i*stepsize):(i*stepsize)+200,0],\
                            NewArray[(i*stepsize):(i*stepsize)+200,1]])
    sc.set_array(NewArray[(i*stepsize):(i*stepsize)+200,2])

    plt.pause(0.1)

plt.ioff()
plt.show()

相关问题 更多 >