Python 2.7 在最后一步将动画保存为图形
我编写了一个脚本,使用matplotlib为我获得的结果制作动画 除了我得到的动画,我还想在动画的最后一步保存这个人物;就在动画重复之前。我定义了一个保存标志,以避免图形被反复保存。您可以在下面看到我的代码的简化版本:Python 2.7 在最后一步将动画保存为图形,python-2.7,animation,matplotlib,Python 2.7,Animation,Matplotlib,我编写了一个脚本,使用matplotlib为我获得的结果制作动画 除了我得到的动画,我还想在动画的最后一步保存这个人物;就在动画重复之前。我定义了一个保存标志,以避免图形被反复保存。您可以在下面看到我的代码的简化版本: #!/usr/bin/env python import numpy as np from matplotlib import pyplot as plt import matplotlib.animation as animation x = np.array(range(1
#!/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()
如果运行脚本,您可能会看到,在第一个循环结束时,动画会出错。此错误是由于设置了True
的blit
导致的。但是,如果将其设置为False
,则该图形会按其应有的方式重复
为什么会有这样的问题,;可能是虫子吗?(我的Python版本是2.7.5+)
是否有更好的方法在动画结束时保存图形?我实际上无法在我的机器上重现您的问题。但是,当调用图形时,
savefig
更改图形的DPI,可能会导致显示问题。如果你改为fig.savefig('foo.png',dpi=fig.dpi)
会发生什么?@JoeKington它解决了这个问题!谢谢你,乔!