目前使用静态帧动画分散图。有没有办法在移动的窗口上制作动画?

问题描述 投票:1回答:1

我有一个格式为[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-200,201-400,401-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()
python numpy animation matplotlib plot
1个回答
0
投票

下面的代码连续遍历我的点阵列,给定的步长和窗口为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()
© www.soinside.com 2019 - 2024. All rights reserved.