Simple Matplotlib animate not working
Question: I am trying to run this code below but it is not working properly. I've
followed the documentation from matplotlib and wonder what is wrong with this
simple code below. I am tryting to animate this into jupyter notebook with
anaconda distro. My python version is 2.7.10.

    
    
    import numpy as np
    from matplotlib import pyplot as plt
    from matplotlib import animation
    
    fig = plt.figure()
    
    def init():
        m = np.zeros(4800)
        m[0] = 1.6
        return m
    
    def animate(i):
        for a in range(1,4800):
            m[a] = 1.6
            m[a-1] = 0
        return m    
    
    anim = animation.FuncAnimation(fig, animate, init_func=init,
                                   frames=200, interval=20, blit=True)
    
    plt.show()
    


Answer: You need to create an actual plot. Just updating a NumPy array is not enough.
Here is an example that likely does what you intend. Since it is necessary to
access the same objects at multiple places, a class seems better suited as it
allows to access instance attributes via `self`:

    
    
    import numpy as np
    from matplotlib import pyplot as plt
    from matplotlib import animation
    
    
    
    class MyAni(object):
        def __init__(self, size=4800, peak=1.6):
            self.size = size
            self.peak = peak
            self.fig = plt.figure()
            self.x = np.arange(self.size)
            self.y = np.zeros(self.size)
            self.y[0] = self.peak
            self.line, = self.fig.add_subplot(111).plot(self.x, self.y)
    
        def animate(self, i):
            self.y[i - 1] = 0
            self.y[i] = self.peak
            self.line.set_data(self.x, self.y)
            return self.line,
    
        def start(self):
            self.anim = animation.FuncAnimation(self.fig, self.animate,
                frames=self.size, interval=20, blit=False)
    
    if __name__ == '__main__':
        ani = MyAni()
        ani.start()
    
        plt.show()
    

