通过clf()对每个帧进行matplotlib动画制作

时间:2014-08-06 13:15:54

标签: python animation matplotlib

我正在尝试使用animation.FuncAnimation制作最简单的matplotlib动画。我不关心效率。我不想跟踪绘制的线条并更新它们的数据(在我想要的应用程序中这会很烦人),我只是想在动画每一帧之前擦除绘图。我认为这样的事情应该有效,但不是......

import matplotlib.animation as animation

fig = Figure()

def updatefig(i):
    clf()
    p = plot(rand(100))
    draw()

anim = animation.FuncAnimation(fig, updatefig, range(10))

1 个答案:

答案 0 :(得分:1)

至少这似乎有效:

import matplotlib.animation as animation
import matplotlib.pyplot as plt
import numpy as np

fig = plt.figure()

def updatefig(i):
    fig.clear()
    p = plt.plot(np.random.random(100))
    plt.draw()

anim = animation.FuncAnimation(fig, updatefig, 10)
anim.save("/tmp/test.mp4", fps=1)

原始代码的问题是Figure写有大写字母F(应为figure)。

否则,我建议不要使用pylab样式“同一命名空间中的所有内容”方法matplotlib。此外,使用面向对象的界面而不是plt.drawplt.plot等将在以后节省很多麻烦。