如何在不使用plt.show()和matplotlib.animation.FuncAnimation结尾的情况下使用plt.savefig()

如何在不使用plt.show()和matplotlib.animation.FuncAnimation结尾的情况下使用plt.savefig(),matplotlib,matplotlib-animation,Matplotlib,Matplotlib Animation,例如,此代码工作正常,仅当最后出现plt.show()时才保存plt。或者它只是运行而不保存任何输出 import matplotlib import matplotlib.pyplot as plt import matplotlib.animation import numpy as np def animate(i): line.set_ydata(np.sin(2*np.pi*i / 50)*np.sin(x)) #fig.canvas.draw() not neede

例如,此代码工作正常,仅当最后出现plt.show()时才保存plt。或者它只是运行而不保存任何输出

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

def animate(i):
    line.set_ydata(np.sin(2*np.pi*i / 50)*np.sin(x))
    #fig.canvas.draw() not needed see comment by @tacaswell
    plt.savefig(str(i)+".png")
    return line,

fig = plt.figure()
ax = fig.add_subplot(111)
ax.set_xlim(0, 2*np.pi)
ax.set_ylim(-1,1)
x = np.linspace(0, 2*np.pi, 200)
line, = ax.plot(x, np.zeros_like(x))
plt.draw()

ani = matplotlib.animation.FuncAnimation(fig, animate, frames=5, repeat=False)
plt.show()
PS-我尝试使用
ani.save(writer=“ffmpeg”,dpi=200)
它工作正常,但后来我使用ffmpeg命令将图像序列转换为动画,它显示了无效的PNG签名

此外,我在这个领域是新手,所以如果我没有遵循任何适当的方法,我会向你道歉


提前谢谢。

当您使用
ffpmeg
保存时,您可以用
ani.save
注释掉
plt.savefig(str(i)+“.png”)
,也就是说,可能是
gif或mp4
使用
ani.save
并注意
plt.show()
如果您删除它,仍然
plt.savefig(str(i)+.png”)
会起作用删除
plt.show()
不会保存png文件,我已经尝试过了。至于
ani.save
,它工作得很好,但我需要一个图像序列,以便稍后通过ffmpeg转换为动画。