2024-09-30 01:32:49 发布
网友
我试着用pyplot来描绘粒子的运动。 问题是我不知道如何创建动画。在
这是笔记本:http://nbviewer.ipython.org/gist/lhk/949c7bf7007445033fd9
显然更新函数不能正常工作,但是错误消息对我来说太神秘了。我需要改变什么?在
你有关于pyplot动画的好教程吗?在
作为@supa1t注释,您应该将图形句柄作为动画的第一个参数。脚本错误源于动画预期的fig对象,该对象具有属性canvas,但却得到scatter,即PathCollection对象,而不是。作为一个最小的动画示例,请考虑
fig
canvas
scatter
PathCollection
import matplotlib.pyplot as plt from matplotlib.animation import FuncAnimation import numpy as np dt = 0.005 n=20 L = 1 particles=np.zeros(n,dtype=[("position", float , 2), ("velocity", float ,2), ("force", float ,2), ("size", float , 1)]) particles["position"]=np.random.uniform(0,L,(n,2)); particles["velocity"]=np.zeros((n,2)); particles["size"]=0.5*np.ones(n); fig = plt.figure(figsize=(7,7)) ax = plt.axes(xlim=(0,L),ylim=(0,L)) scatter=ax.scatter(particles["position"][:,0], particles["position"][:,1]) def update(frame_number): particles["force"]=np.random.uniform(-2,2.,(n,2)); particles["velocity"] = particles["velocity"] + particles["force"]*dt particles["position"] = particles["position"] + particles["velocity"]*dt particles["position"] = particles["position"]%L scatter.set_offsets(particles["position"]) return scatter, anim = FuncAnimation(fig, update, interval=10) plt.show()
有many好的动画教程,但是here的答案特别好。在
作为@supa1t注释,您应该将图形句柄作为动画的第一个参数。脚本错误源于动画预期的
fig
对象,该对象具有属性canvas
,但却得到scatter
,即PathCollection
对象,而不是。作为一个最小的动画示例,请考虑有many好的动画教程,但是here的答案特别好。在
相关问题 更多 >
编程相关推荐