如何制作箭袋情节动画

时间:2021-04-02 15:08:50

标签: python animation montecarlo

我正在尝试制作一个颤动图动画,以观察在蒙特卡罗模拟下演化的二维海森堡磁铁的轨迹。我的代码如下:

xylattice=initialize(Nx_lattice,'random')
xylattice,singx,singy=insert_defect_into_lattice(xylattice,defectspins,Nx_defect)

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

def generate_quiver(spinarray,Ndim):
    xp=np.arange(0,Ndim,1)
    yp=np.arange(0,Ndim,1)
    yy,xx=np.meshgrid(xp,yp)
    u=np.zeros(Ndim*Ndim)
    v=np.zeros(Ndim*Ndim)
    count=0
    
    for i in range(Ndim):
        for j in range(Ndim):
            cartx,carty=polar_to_cartesian(spinarray[i,j])
            u[count]=cartx
            v[count]=carty
            count += 1
    
    return xx,yy,u,v

X,Y,U,V=generate_quiver(xylattice,Nx_lattice)
Q=ax.quiver(X,Y,U,V)

def update_quiver(num,xylattice):
    energy=get_energy(xylattice)
    magx,magy=get_magnetization(xylattice)
    xylattice,energy,magx,magy=monte_carlo(xylattice,energy,magx,magy,beta)
    X,Y,U,V=generate_quiver(xylattice,Nx_lattice)
    Q=ax.quiver(X,Y,U,V)
    return Q

anim=animation.FuncAnimation(fig,update_quiver,fargs=xylattice,interval=1,blit=False)
plt.show()

代码首先初始化一个名为 xylattice 的二维数组,并使用“insert_defect_into_lattice”函数对其进行一些修改。然后我用初始化的 xylattice 生成一个箭袋图。 update_quiver 函数运行一个蒙特卡罗步骤来改变 xylattice,然后生成一个新的箭袋图。我正在尝试使用 animation.FuncAnimation 函数为不断变化的箭袋图制作动画,但它似乎不喜欢将二维数组作为“fargs”的参数,我不知道该怎么做。任何帮助将不胜感激。

0 个答案:

没有答案