matplotlib imshow(): how to animate?

image, matplotlib, matplotlib-animation, python

Solution

You're very close, but there's one mistake - `init` and `animate` should return iterables containing the artists that are being animated. That's why in Jake's version they return `line,` (which is actually a tuple) rather than `line` (which is a single line object). Sadly the docs are not clear on this!

You can fix your version like this:

# initialization function: plot the background of each frame
def init():
    im.set_data(np.random.random((5,5)))
    return [im]

# animation function.  This is called sequentially
def animate(i):
    a=im.get_array()
    a=a*np.exp(-0.001*i)    # exponential decay of the values
    im.set_array(a)
    return [im]

Problem

i found this wonderful short tutorial on animation: http://jakevdp.github.io/blog/2012/08/18/matplotlib-animation-tutorial/ however i cant produce an animated imshow() plot of same fashion. I tried to replace some lines: ``` # First set up the figure, the axis, and the plot element we want to animate fig = plt.figure() ax = plt.axes(xlim=(0, 10), ylim=(0, 10)) #line, = ax.plot([], [], lw=2) a=np.random.random((5,5)) im=plt.imshow(a,interpolation='none') # initialization function: plot the background of each frame def init(): im.set_data(np.random.random((5,5))) return im # animation function. This is called sequentially def animate(i): a=im.get_array() a=a*np.exp(-0.001*i) # exponential decay of the values im.set_array(a) return im ``` but i run into errors can you help me get this running? thank you in advance. best,

Original source