如何在 Matplotlib 中绘制散点图动画?
使用 matplotlib 的 FuncAnimation 方法,我们可以制作图表动画。我们可以传入一个用户自定义方法,在其中我们将更改粒子的位置,最后,我们将返回绘图类型。
步骤
获取粒子的初始位置、速度、力和大小。
创建新图形,或使用 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()输出

广告
数据结构
网络
RDBMS
操作系统
Java
iOS
HTML
CSS
Android
Python
C 编程
C++
C#
MongoDB
MySQL
Javascript
PHP