使用 Python 生成影片,无需将单个帧保存到文件
matplotlibpythonserver side programmingprogramming更新于 2024/9/28 6:36:17
使用 FuncAnimation 方法,我们可以创建影片。我们将创建一个用户定义的方法 update,以继续更改粒子的位置,最后,该方法将返回散点图实例。
步骤
获取粒子的初始位置、速度、力和大小。
创建一个新图形,或使用 figsize = (7, 7) 激活现有图形。
使用 xlim 和 ylim 向当前图形添加轴并使其成为当前轴。
绘制粒子初始位置的散点图。
通过重复调用函数 *func* 制作动画。我们可以将一个有助于改变粒子位置的用户定义方法传递到 FuncAnimation 类中。
使用 plt.show() 显示图形。
示例
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()
输出

相关文章
有用资源
python 参考教程 - 该教程包含有关 python 的更多信息:https://www.cainiaomax.com/python/

