在最后一步保存动画作为图形

时间:2014-02-21 18:32:11

标签: python-2.7 animation matplotlib

我编写了一个脚本,使用matplotlib动画我获得的结果。

除了我得到的动画,我想在动画的最后一步保存图形;就在动画重复之前。我定义了一个save-flag,以避免一遍又一遍地保存数字。您可以在下面看到我的代码的简化版本:

#!/usr/bin/env python
import numpy as np
from matplotlib import pyplot as plt
import matplotlib.animation as animation

x = np.array(range(12))
y = np.array([i**2 for i in range(12)])

fig = plt.figure()
ax = plt.axes(xlim = (0,15), ylim = (0,150))
line, = ax.plot([],[], 'o-')

def init():
    line.set_data([], [])
    return line,

save_flag = False
def animate(i):
    i = (i+1)%(len(x)+1)
    line.set_data(x[0:i], y[0:i])

    global save_flag   
    if (save_flag == False) and (i == (len(x)-1)):
        print "\nThe figure is being saved!\n"
        fig.savefig("foo" + ".png")
        save_flag = True

    return line,

ani = animation.FuncAnimation(fig, animate, repeat=True, blit=True, init_func=init)
plt.show()

如果运行脚本,您可能会看到,在第一个循环结束时,动画变得错误。此错误是由blit引起的,True设置为False。但是,如果它设置为{{1}},那么该数字应该重复。

为什么会出现这样的问题;它可能是一个错误吗? (我的Python版本是2.7.5 +。)

有没有更好的方法在动画结束时保存数字?

0 个答案:

没有答案