For example, this code works fine and saves the plt only when the plt.show() is present at the end. or else it just runs without saving any output.
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 - I tried using ani.save(writer="ffmpeg",dpi=200)
and it works fine, but later on as I am using ffmpeg commands to convert the image sequence to animation, it shows invalid PNG signature.
Also I am new in this field so my appoligies if i did not follow any proper method.
Thanks in advance.