import numpy as npimport matplotlibpyplot as pltimport matplotlibanimation as animationfrom matplotlibanimation import FuncAnimation#from IPythondisplay import HTML# 行星数据planet_data = Mercury orbi
在创建行星轨迹时,你可以使用一个空的列表来存储每个行星的轨迹,并在更新函数中将每个行星的轨迹添加到该列表中。然后,在初始化函数中将该列表返回。修改后的代码如下:
# 创建画布
fig = plt.figure()
ax = plt.axes(xlim=(-35, 35), ylim=(-35, 35))
# 行星轨迹
orbits = []
for planet in planet_data:
orbit, = ax.plot([], [], 'o', lw=1, color=planet_data[planet]['color'])
orbits.append(orbit)
# 初始化函数
def init():
for orbit in orbits:
orbit.set_data([], [])
return orbits
# 动画更新函数
def update(frame):
# 计算每个行星的位置
for i, planet in enumerate(planet_data):
orbit_radius = planet_data[planet]['orbit_radius']
orbit_period = planet_data[planet]['orbit_period']
theta = 2 * np.pi * frame / orbit_period
x = orbit_radius * np.cos(theta)
y = orbit_radius * np.sin(theta)
orbits[i].set_data(x, y)
return orbits
# 创建动画
anim = animation.FuncAnimation(fig, update, init_func=init, frames=1000, interval=20, blit=True)
# 显示动画
plt.show()
这样修改后,应该就能够正常运行并显示动画了
原文地址: http://www.cveoy.top/t/topic/hzuC 著作权归作者所有。请勿转载和采集!