我有两个随机向量,用于创建线图。使用相同的矢量,我想动画线,但动画是静态的 - 它只是绘制原始图形。关于如何为这样的线图制作动画的任何建议?
import numpy as np
import matplotlib.pyplot as py
from matplotlib import animation
# random line plot example
x = np.random.rand(10)
y = np.random.rand(10)
py.figure(3)
py.plot(x, y, lw=2)
py.show()
# animation line plot example
fig = py.figure(4)
ax = py.axes(xlim=(0, 1), ylim=(0, 1))
line, = ax.plot([], [], lw=2)
def init():
line.set_data([], [])
return line,
def animate(i):
line.set_data(x, y)
return line,
anim = animation.FuncAnimation(fig, animate, init_func=init, frames=200, interval=20, blit=False)
动画的最后一帧应该类似于下图。请记住,这是一个随机图,因此每次运行时实际数字都会发生变化。
答案 0 :(得分:2)
好的,我认为您想要的只是绘制动画的帧 i 的 i -th索引。在这种情况下,您只需使用帧编号来限制显示的数据:
import numpy as np
import matplotlib.pyplot as py
from matplotlib import animation
x = np.random.rand(10)
y = np.random.rand(10)
# animation line plot example
fig = py.figure(4)
ax = py.axes(xlim=(0, 1), ylim=(0, 1))
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)
注意我将帧数更改为len(x)+1
并增加了间隔,因此它的速度足够慢。