Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

matplotlib imshow(): how to animate?

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,

like image 504
user1805743 Avatar asked Jun 20 '13 11:06

user1805743


People also ask

Can you animate Matplotlib?

Animations in Matplotlib can be made by using the Animation class in two ways: By calling a function over and over: It uses a predefined function which when ran again and again creates an animation. By using fixed objects: Some animated artistic objects when combined with others yield an animation scene.


1 Answers

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] 
like image 136
ali_m Avatar answered Sep 28 '22 16:09

ali_m