I a previous post, I outlined how to embed a Matplotlib Animation directly in the Jupyter Notebook as a HTML5 video. In this notebook, we take the same Animation and save it as a GIF using Imagemagick. First, let us reproduce the
FuncAnimation object from the notebook.
import numpy as np import matplotlib.pyplot as plt from matplotlib import animation, rc from IPython.display import HTML, Image
# equivalent to rcParams['animation.html'] = 'html5' rc('animation', html='html5')
# First set up the figure, the axis, and the plot element we want to animate fig, ax = plt.subplots() ax.set_xlim(( 0, 2)) ax.set_ylim((-2, 2)) line, = ax.plot(, , lw=2)
# initialization function: plot the background of each frame def init(): line.set_data(, ) return (line,)
# animation function. This is called sequentially def animate(i): x = np.linspace(0, 2, 1000) y = np.sin(2 * np.pi * (x - 0.01 * i)) line.set_data(x, y) return (line,)
# call the animator. blit=True means only re-draw the parts that # have changed. anim = animation.FuncAnimation(fig, animate, init_func=init, frames=100, interval=20, blit=True)
Now, we just need to save the animation instance with
writer=imagemagick. But before we do that, we first make sure
imagemagick has been properly installed on our system.
!brew install imagemagick
Warning: imagemagick-7.0.4-6 already installed
Now we can go ahead and save it as a GIF.
anim.save('../../files/animation.gif', writer='imagemagick', fps=60)
Finally, let's read it back in and display it to make sure it saved as expected.