matplotlib save animation in gif error

Just a reminder, before you use Matplotlib and ImageMagick to convert images or videos to gif, you need to modify Matplotlib's config and add ImageMagick's path.

The following code will show you the config file path of Matplotlib

import matplotlib
matplotlib.matplotlib_fname()

For me the path is

C:\Anaconda\lib\site-packages\matplotlib\mpl-data\matplotlibrc

Then changing animation.convert_path

#animation.convert_path: 'convert' # Path to ImageMagick's convert binary.
                                   # On Windows use the full path since convert
                                   # is also the name of a system tool.

by adding convert.exe path to it

animation.convert_path: C:\Program Files\ImageMagick-6.9.2-Q16-HDRI\convert.exe

Don't forget to remove the # before animation.convert_path.

After the above modification, Matplotlib and ImageMagick will perfectly work and output the gif file you want.

example gif

Hope it helps.


This is because matplotlib does not support GIFs without external programs. If you have imagemagick correctly installed and configured, this should work:

import matplotlib
matplotlib.use('Agg')
import matplotlib.pyplot as plt
import matplotlib.animation
import numpy as np


def init_animation():
    global line
    line, = ax.plot(x, np.zeros_like(x))
    ax.set_xlim(0, 2*np.pi)
    ax.set_ylim(-1,1)

def animate(i):
    line.set_ydata(np.sin(2*np.pi*i / 50)*np.sin(x))
    return line,

fig = plt.figure()
ax = fig.add_subplot(111)
x = np.linspace(0, 2*np.pi, 200)

ani = matplotlib.animation.FuncAnimation(fig, animate, init_func=init_animation, frames=50)
ani.save('/tmp/animation.gif', writer='imagemagick', fps=30)

enter image description here