Matplotlib FuncAnimation没有动画线图

时间:2014-11-11 22:30:36

标签: python-3.x numpy matplotlib

我有两个随机向量,用于创建线图。使用相同的矢量,我想动画线,但动画是静态的 - 它只是绘制原始图形。关于如何为这样的线图制作动画的任何建议?

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)

动画的最后一帧应该类似于下图。请记住,这是一个随机图,因此每次运行时实际数字都会发生变化。

enter image description here

1 个答案:

答案 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并增加了间隔,因此它的速度足够慢。