在创建行星轨迹时,你可以使用一个空的列表来存储每个行星的轨迹,并在更新函数中将每个行星的轨迹添加到该列表中。然后,在初始化函数中将该列表返回。修改后的代码如下:

# 创建画布
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()

这样修改后,应该就能够正常运行并显示动画了

import numpy as npimport matplotlibpyplot as pltimport matplotlibanimation as animationfrom matplotlibanimation import FuncAnimation#from IPythondisplay import HTML# 行星数据planet_data = Mercury orbi

原文地址: http://www.cveoy.top/t/topic/hzuC 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录