import numpy as np
import matplotlib.pyplot as plt
import matplotlib.animation as animation

# 行星数据
planet_data = {
    'Mercury': {'orbit_radius': 0.387, 'orbit_period': 0.24, 'color': 'gray'},
    'Venus': {'orbit_radius': 0.723, 'orbit_period': 0.62, 'color': 'orange'},
    'Earth': {'orbit_radius': 1, 'orbit_period': 1, 'color': 'blue'},
    'Mars': {'orbit_radius': 1.524, 'orbit_period': 1.88, 'color': 'red'},
    'Jupiter': {'orbit_radius': 5.203, 'orbit_period': 11.86, 'color': 'brown'},
    'Saturn': {'orbit_radius': 9.539, 'orbit_period': 29.46, 'color': 'goldenrod'},
    'Uranus': {'orbit_radius': 19.18, 'orbit_period': 84.01, 'color': 'lightblue'},
    'Neptune': {'orbit_radius': 30.07, 'orbit_period': 164.8, 'color': 'darkblue'}
}

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

# 在 Jupyter Notebook 中显示动画
from IPython.display import HTML
HTML(anim.to_html5_video())

在 Jupyter Notebook 中显示动画

如果在 Jupyter Notebook 中无法显示动画,可以尝试在代码中添加以下两行代码:

from IPython.display import HTML
HTML(anim.to_html5_video())

这样可以将动画以HTML5视频的形式显示出来。另外,确保你的环境中已经安装了ffmpegimagemagick,这些软件可以用来生成动画。如果没有安装,可以使用以下命令安装:

  • 对于ffmpeg!apt-get install ffmpeg
  • 对于imagemagick!apt-get install imagemagick

如果你仍然无法显示动画,请检查是否有其他错误或警告信息输出。

Python Matplotlib 行星轨道动画:使用 FuncAnimation 实现太阳系模拟

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

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