title: How to animate a bar plot
body: <p>I want to make an animated barchart in Python and save this animation in mp4 format. My problem is that the frames in the saved video overlay, although I use &quot;blit=True&quot; to tell the animation that only the things that change from frame to frame are drawn. Surprisingly, this problem does not occur in the built-in preview of Python.
  Here is a minimal that reflects my situation:</p>
  <pre><code>import matplotlib.pyplot as plt
  from matplotlib import animation
  
  def barlist(n): #That's the list of bars I want to display
      C=[]
      for k in range(1,6):
          C.append(1/float(n*k))
      return C
  
  fig=plt.figure()
  
  n=100 #Number of frames
  
  def animate(i):
      x=range(1,6)
      y=barlist(i+1)
      return plt.bar(x,y)
  
  anim=animation.FuncAnimation(fig,animate,repeat=False,blit=True,frames=n,
                               interval=50)
  anim.save('barchart_animated_'+str(n)+'.mp4')
  plt.show()
  </code></pre>
  <p>I must admit that I'm not pretty sure what I should do to remove this flaw. The only example I know of where the bars do not overlay in the frames is here (more exactly, I'm referring to the code of the first answer of the following link):</p>
  <p><a href="https://stackoverflow.com/questions/16249466/dynamically-updating-a-bar-plot-in-matplotlib">Dynamically updating a bar plot in matplotlib</a></p>
  <p>It seems that I somehow have to tell the animation how it should set the height of each bar at each frame with the set_height-method. But as I said, I don't really know what's wrong in the above example. Thanks for any help!</p>
  <p>Martin</p>