text: """
  =====
  Decay
  =====
  
  This example showcases:
  - using a generator to drive an animation,
  - changing axes limits during an animation.
  """
  
  import numpy as np
  import matplotlib.pyplot as plt
  import matplotlib.animation as animation
  
  
  def data_gen():
      for cnt in range(1000):
          t = cnt / 10
          yield t, np.sin(2*np.pi*t) * np.exp(-t/10.)
  
  
  def init():
      ax.set_ylim(-1.1, 1.1)
      ax.set_xlim(0, 10)
      del xdata[:]
      del ydata[:]
      line.set_data(xdata, ydata)
      return line,
  
  fig, ax = plt.subplots()
  line, = ax.plot([], [], lw=2)
  ax.grid()
  xdata, ydata = [], []
  
  
  def run(data):
      # update the data
      t, y = data
      xdata.append(t)
      ydata.append(y)
      xmin, xmax = ax.get_xlim()
  
      if t >= xmax:
          ax.set_xlim(xmin, 2*xmax)
          ax.figure.canvas.draw()
      line.set_data(xdata, ydata)
  
      return line,
  
  ani = animation.FuncAnimation(fig, run, data_gen, blit=False, interval=10,
                                repeat=False, init_func=init)
  plt.show()
  