#python #animation #random-walk
Вопрос:
Я пытаюсь отобразить случайное блуждание для популяции и показать его в анимации, однако функция FuncAnimation, похоже, не проходит первый кадр, хотя она обращается к функции animate, поскольку кадр отображается в spyder.
Анимация должна прекратиться, когда все население (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])amp;(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) amp;(i<NpopA) :
NpopCol.append('b')
if(Bool[i]==0) amp;(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()
Выше приведен код, который я использую, любая помощь в этом вопросе будет весьма признательна.
заранее спасибо!
Ответ №1:
Я выяснил, что что-то было не так со Spyder во время его запуска (возможно, какая-то настройка, которую я установил ранее, или некоторые конфликтующие библиотеки). Мой коллега также запустил тот же код, и это сработало для него.
Я попробовал тот же код в Google Colab, и он сработал! Если у вас та же проблема, я бы предложил запустить ее в другой среде.