title: python matplotlib: unable to call FuncAnimation from inside a function
body: <p>I'm trying to implement a function which outputs an animated plot.</p>
  
  <p>If I take simple_anim.py (from matplotlib examples) as a base:</p>
  
  <pre><code>"""
   A simple example of an animated plot
  """
  import numpy as np
  import matplotlib.pyplot as plt
  import matplotlib.animation as animation
  
  fig, ax = plt.subplots()
  
  x = np.arange(0, 2*np.pi, 0.01)        # x-array
  line, = ax.plot(x, np.sin(x))
  
  def animate(i):
      line.set_ydata(np.sin(x+i/10.0))  # update the data
      return line,
  
  #Init only required for blitting to give a clean slate.
  def init():
      line.set_ydata(np.ma.array(x, mask=True))
      return line,
  
  ani = animation.FuncAnimation(fig, animate, np.arange(1, 200), init_func=init,
      interval=25, blit=True)
  plt.show()
  </code></pre>
  
  <p>Effectively it works.</p>
  
  <p>BUT, if I close this code inside a function (in order to provide changing parameters, and avoid doing an explicit file for each possible parameter value):</p>
  
  <pre><code>"""
   A simple example of an animated plot
  """
  import numpy as np
  import matplotlib.pyplot as plt
  import matplotlib.animation as animation
  
  def a():
      fig, ax = plt.subplots()
  
      x = np.arange(0, 2*np.pi, 0.01)        # x-array
      line, = ax.plot(x, np.sin(x))
  
      def animate(i):
          line.set_ydata(np.sin(x+i/10.0))  # update the data
          return line,
  
      #Init only required for blitting to give a clean slate.
      def init():
          line.set_ydata(np.ma.array(x, mask=True))
          return line,
  
      ani = animation.FuncAnimation(fig, animate, np.arange(1, 200), init_func=init,
          interval=25, blit=True)
      plt.show()
  </code></pre>
  
  <p>and then call the function, the figure plot remains white. In fact, it never arrives to enter into the animate function.</p>
  
  <p>I know that I'm missing some information, and that's why it does not work.
  Does anybody can give me some hints?</p>
  
  <p>Thank you very much,</p>
  
  <p>Andrés</p>