title: How to animate a time-ordered sequence of matplotlib plots
body: <p>I want to plot a sequence of .png images in matplotlib. The goal is to plot them rapidly to simulate the effect of a movie, but I have additional reasons for wanting to avoid actually creating an .avi file or saving matplotlib figures and then viewing them in sequence outside of Python.</p>
  
  <p>I'm specifically trying to view the image files in sequence inside a for-loop in Python. Assuming I have imported matplotlib correctly, and I have my own functions 'new_image()' and 'new_rect()', here's some example code that fails to work because of the blocking effect of the show() function's call to the GUI mainloop:</p>
  
  <pre><code> for index in index_list:
       img = new_image(index)
       rect = new_rect(index)
  
       plt.imshow(img)
       plt.gca().add_patch(rect)
       plt.show()
  
       #I also tried pausing briefly and then closing, but this doesn't
       #get executed due to the GUI mainloop from show()
       time.sleep(0.25)
       plt.close()
  </code></pre>
  
  <p>The above code works to show only the first image, but then the program just hangs and waits for me to manually close the resultant figure window. Once I do close it, the program then just hangs and doesn't re-plot with the new image data. What should I be doing? Also note that I have tried replacing the plt.show() command with a plt.draw() command, and then adding the plt.show() outside of the for-loop. This doesn't display anything and just hangs.</p>