FuncAnimation 只返回一帧
FuncAnimation only returning one frame
我正在尝试显示总体的随机游走并在动画中显示它,但是,FuncAnimation 似乎没有超过第一帧,尽管它在显示帧时访问动画函数间谍.
当整个种群 (Npop) 的 Bool=1 或 t 达到 250 时动画停止
step_set = (-1, 0, 1)
def animate(t):
global NpopCol,NpopA, NpopB, Npop,path, step,step_set,Bool, direction
print(t)
for i in range(0,Npop):
path[i] =step[i]
direction =np.random.choice(step_set,2)
for j in range(0,Npop):
if(Bool[j]==1):
if(path[j][0]==path[i][0])&(path[j][1]==path[i][1]):
Bool[i]=1
##generate a path, moving 1 square right/left , up/down / diagonally
step[i]=step[i]+ direction
NpopCol=[]
for i in range (0,Npop):
if(Bool[i]==1):
NpopCol.append('r')
if(Bool[i]==0) &(i<NpopA) :
NpopCol.append('b')
if(Bool[i]==0) &(i>=NpopA) :
NpopCol.append('g')
if (sum(Bool)==Npop) or t>250:
anim.event_source.stop()
##t=t+1
scat.set_offsets(path)
scat.set_color(NpopCol)
return scat,path
fig , ax=plt.subplots()
scat=plt.scatter(path[:,0], path[:,1],c=NpopCol,s=10)
anim=FuncAnimation(fig,animate,interval=10)
plt.show()
以上是我正在使用的代码,如有任何帮助,将不胜感激。
提前致谢!
我发现 Spyder 有问题,而 运行 这个(可能是我之前设置的某种设置或一些冲突的库)。我的同事也 运行 相同的代码并且对他有效。
我在 Google Colab 上尝试了相同的代码,它成功了!如果您有同样的问题,我建议 运行 在不同的环境中使用它。
我正在尝试显示总体的随机游走并在动画中显示它,但是,FuncAnimation 似乎没有超过第一帧,尽管它在显示帧时访问动画函数间谍.
当整个种群 (Npop) 的 Bool=1 或 t 达到 250 时动画停止
step_set = (-1, 0, 1)
def animate(t):
global NpopCol,NpopA, NpopB, Npop,path, step,step_set,Bool, direction
print(t)
for i in range(0,Npop):
path[i] =step[i]
direction =np.random.choice(step_set,2)
for j in range(0,Npop):
if(Bool[j]==1):
if(path[j][0]==path[i][0])&(path[j][1]==path[i][1]):
Bool[i]=1
##generate a path, moving 1 square right/left , up/down / diagonally
step[i]=step[i]+ direction
NpopCol=[]
for i in range (0,Npop):
if(Bool[i]==1):
NpopCol.append('r')
if(Bool[i]==0) &(i<NpopA) :
NpopCol.append('b')
if(Bool[i]==0) &(i>=NpopA) :
NpopCol.append('g')
if (sum(Bool)==Npop) or t>250:
anim.event_source.stop()
##t=t+1
scat.set_offsets(path)
scat.set_color(NpopCol)
return scat,path
fig , ax=plt.subplots()
scat=plt.scatter(path[:,0], path[:,1],c=NpopCol,s=10)
anim=FuncAnimation(fig,animate,interval=10)
plt.show()
以上是我正在使用的代码,如有任何帮助,将不胜感激。
提前致谢!
我发现 Spyder 有问题,而 运行 这个(可能是我之前设置的某种设置或一些冲突的库)。我的同事也 运行 相同的代码并且对他有效。
我在 Google Colab 上尝试了相同的代码,它成功了!如果您有同样的问题,我建议 运行 在不同的环境中使用它。