如何在不重新运行脚本的情况下重置matplotlib动画

时间:2016-07-26 23:23:51

标签: python animation matplotlib figure

我正在使用matplotlib的FuncAnimation函数为大型数据集的一部分设置动画:

fig = plt.figure(figsize=(15, 11.5))
ax = fig.add_subplot(111, aspect='equal', autoscale_on=False,
                     xlim=(x1,x2), ylim=(y1, y2))

data,=ax.plot([],[],'o')

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


def animate(t):
    global x_pos,y_pos
    data.set_data(x_pos[t],y_pos[t])
    return data

ani=animation.FuncAnimation(fig,animate,frames=duration,interval=20,
                            init_func=init,blit=True)


plt.show()

当我从头开始运行代码时,这非常有用。但是,由于这涉及加载和预处理大型数据集需要几分钟,所以我希望能够只运行一段代码来测试和动画。

当我关闭我的动画并尝试再次运行时,我只留下一个空白图 - 没有绘制点,并且永远不会调用animate()函数(我用print语句测试了它)。 / p>

我尝试清理情节和图:

plt.clf()
fig.close()
plt.clear(figure)

并尝试不同的图号,但结果是一样的。

如何清除动画以便我可以在不重新运行整个脚本的情况下再次运行它?

1 个答案:

答案 0 :(得分:1)

试试这个:

ani.frame_seq = ani.new_frame_seq()