python - 在 Python 中随着时间的推移动画线图
问题描述
时间序列数据是随时间变化的数据。我正在尝试在 python 中为时间序列数据的线图制作动画。在我下面的代码中,这转化为绘制xtraj
为它们和trange
x。情节似乎并不奏效。
我在 Stack Overflow 上发现了类似的问题,但这里提供的解决方案似乎都不起作用。一些类似的问题是matplotlib 动画线图保持为空,Matplotlib FuncAnimation 没有动画线图和参考帮助文件Animations with Matplotlib的教程。
我首先使用第一部分创建数据并使用第二部分进行模拟。我尝试重命名将用作 y 值和 x 值的数据,以使其更易于阅读。
import numpy as np
import matplotlib.pyplot as plt
from matplotlib import animation
dt = 0.01
tfinal = 5.0
x0 = 0
sqrtdt = np.sqrt(dt)
n = int(tfinal/dt)
xtraj = np.zeros(n+1, float)
trange = np.linspace(start=0,stop=tfinal ,num=n+1)
xtraj[0] = x0
for i in range(n):
xtraj[i+1] = xtraj[i] + np.random.normal()
x = trange
y = xtraj
# animation line plot example
fig = plt.figure(4)
ax = plt.axes(xlim=(-5, 5), ylim=(0, 5))
line, = ax.plot([], [], lw=2)
def init():
line.set_data([], [])
return line,
def animate(i):
line.set_data(x[:i], y[:i])
return line,
anim = animation.FuncAnimation(fig, animate, init_func=init, frames=len(x)+1,interval=200, blit=False)
plt.show()
任何帮助将不胜感激。我是使用 Python 工作的新手,尤其是尝试为绘图设置动画。所以如果这个问题是微不足道的,我必须道歉。
概括
因此,总结一下我的问题,如何在 Python 中为时间序列设置动画,迭代时间步长(x 值)。
解决方案
检查此代码:
import numpy as np
import matplotlib.pyplot as plt
from matplotlib import animation
dt = 0.01
tfinal = 1
x0 = 0
sqrtdt = np.sqrt(dt)
n = int(tfinal/dt)
xtraj = np.zeros(n+1, float)
trange = np.linspace(start=0,stop=tfinal ,num=n+1)
xtraj[0] = x0
for i in range(n):
xtraj[i+1] = xtraj[i] + np.random.normal()
x = trange
y = xtraj
# animation line plot example
fig, ax = plt.subplots(1, 1, figsize = (6, 6))
def animate(i):
ax.cla() # clear the previous image
ax.plot(x[:i], y[:i]) # plot the line
ax.set_xlim([x0, tfinal]) # fix the x axis
ax.set_ylim([1.1*np.min(y), 1.1*np.max(y)]) # fix the y axis
anim = animation.FuncAnimation(fig, animate, frames = len(x) + 1, interval = 1, blit = False)
plt.show()
上面的代码重现了这个动画:
推荐阅读
- laravel - Laravel Coinpayment 问题“HMAC 签名不匹配”
- javascript - 处理 EventEmitterModule 通配符 - NestJS
- python-3.7 - Python 3.7 - 如何将动态 csv 加载到预先存在的 mysql 表中,而不管文件 python 中的列顺序如何
- angular - 服务器端角度方式,dataTable 属性不适用于 Get 请求
- windows - 使用 OSQuery 选择文件夹和子文件夹中的所有文件
- docker - 将公共 ECR 图像用于 lambda 函数
- javascript - Next.js 构建失败,因为“slug”未作为字符串提供
- python - 如何将整数参数发送到 RabbitMQ?
- sharepoint - 使用 SPFx 创建团队选项卡时无法预配 SharePoint 列表资产
- flutter - Flutter http请求有时会显示错误