目录
matplotlib.animation 是 Matplotlib 库中的一个模块,用于创建动画。它提供了多种工具和函数,使您能够轻松地创建各种类型的动画。
import numpy as np
import matplotlib.pyplot as plt
import matplotlib.animation as animation
fig, ax = plt.subplots()
xdata, ydata = [], []
ln, = ax.plot([], [], 'r-', animated=True)
def init():
? ? ax.set_xlim(0, 2 * np.pi)
? ? ax.set_ylim(-1, 1)
? ? return ln,
def update(frame):
? ? xdata.append(frame)
? ? ydata.append(np.sin(frame))
? ? ln.set_data(xdata, ydata)
? ? return ln,
ani = animation.FuncAnimation(fig, update, frames=np.linspace(0, 2 * np.pi, 128),
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? init_func=init, blit=True)
plt.show()
三:绘制散点图
import pandas as pd
import matplotlib.pyplot as plt
import numpy as np
from matplotlib.animation import FuncAnimation
plt.close("all")
N_times = 10
N_tracks = 3
x = np.arange(N_times)
y = np.ones((N_tracks, N_times))*np.arange(N_tracks)[:, None]
data = {"Track": sorted(["Track 1", "Track 2", "Track 3"]*N_times),
? ? ? ? "Timeline": x.tolist()*3,
? ? ? ? "Positions": y.ravel()}
df = pd.DataFrame(data)
colors = {"Track 1": "tab:blue",
? ? ? ? ? "Track 2": "tab:orange",
? ? ? ? ? "Track 3": "tab:green"}
fig, ax = plt.subplots()
ax.set_yticks(np.arange(N_tracks), labels=df["Track"].unique())
ax.set_xticks(df["Timeline"].unique())
ax.set_xlim(df["Timeline"].min()-0.5, df["Timeline"].max()+0.5)
scatters = []
for track, group in df.groupby("Track"):
? ? scatters.append(ax.scatter(group["Timeline"].iloc[0],
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?group["Positions"].iloc[0],
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?s=45, c=colors[track]))
def animate(i):
? ? for scatter, (_, group) in zip(scatters, df.groupby("Track")):
? ? ? ? scatter.set_offsets((group["Timeline"].iloc[i],
? ? ? ? ? ? ? ? ? ? ? ? ? ? ?group["Positions"].iloc[i]))
anim = FuncAnimation(fig, animate, frames=N_times, interval=200)
anim.save("test.gif", writer="pillow")