plt.animation绘制动画

发布时间:2024年01月19日

目录

一:介绍

二:创建线动画


一:介绍

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")

文章来源:https://blog.csdn.net/qinshi501/article/details/135706979
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。