title: How to make Matplotlib saved gif looping
body: <p>Environment:</p>
  
  <ul>
  <li>Matplotlib v2.2.2</li>
  </ul>
  
  <p>Code:</p>
  
  <pre><code>import numpy as np
  import matplotlib.pyplot as plt
  import matplotlib.animation as animation
  from matplotlib.animation import PillowWriter
  
  fig = plt.figure()
  
  def f(x, y):
      return np.sin(x) + np.cos(y)
  
  x = np.linspace(0, 2 * np.pi, 120)
  y = np.linspace(0, 2 * np.pi, 100).reshape(-1, 1)
  # ims is a list of lists, each row is a list of artists to draw in the
  # current frame; here we are just animating one artist, the image, in
  # each frame
  ims = []
  for i in range(20):
      x += np.pi / 15.
      y += np.pi / 20.
      im = plt.imshow(f(x, y))
      ims.append([im])
  
  ani = animation.ArtistAnimation(fig, ims, interval=50, blit=True,
                                  repeat_delay=500)
  
  writer = PillowWriter(fps=20)
  ani.save("demo2.gif", writer=writer)
  
  plt.show()
  </code></pre>
  
  <p>Output:
  It only play once.</p>
  
  <p><a href="https://i.stack.imgur.com/hsiBX.gif" rel="noreferrer"><img src="https://i.stack.imgur.com/hsiBX.gif" alt="enter image description here"></a></p>