This looks like a bug in matplotlib to me; I get the same thing.

The basic issue is that QuadContourSet is derived from an artist, and
so does not have all of the artist methods; the animation framework
depends on the things that it is animating being artists.

The following monkey patch fixes it in the example script (obviously,
it does not fix the underlying problem; for QuadContourSet to be
usable in this context, it needs to obey the artist interface).
Hopefully, it will be enough to get you up and running.  Just add the
four lines between contour call and the appending of the output of
contour() into the list "ims", and also put an "import types" at the
top.


#!/usr/bin/env python
"""
An animated image
"""
import numpy as np
import matplotlib.pyplot as plt
import matplotlib.animation as animation
import types
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(60):
    x += np.pi / 15.
    y += np.pi / 20.
    im = plt.contour(f(x, y))
    def setvisible(self,vis):
       for c in self.collections: c.set_visible(vis)
    im.set_visible = types.MethodType(setvisible,im,None)
    im.axes = plt.gca()
    ims.append([im])
ani = animation.ArtistAnimation(fig, ims, interval=50, blit=True,
    repeat_delay=1000)
ani.save('dynamic_images.mp4')

plt.show()

------------------------------------------------------------------------------
RSA(R) Conference 2012
Save $700 by Nov 18
Register now
http://p.sf.net/sfu/rsa-sfdev2dev1
_______________________________________________
Matplotlib-users mailing list
Matplotlib-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/matplotlib-users

Reply via email to