如何为不同颜色的条形图制作动画?

时间:2019-05-10 23:54:01

标签: python matplotlib

我用不同的颜色绘制了一个条形图,并且效果很好。但是,当我尝试用它制作动画时,它的表现却很奇怪。例如,如果我继续调整窗口的大小,则可以看到动画的更改,但是如果不调整动画窗口的大小,它将无法更新和刷新。我检查了每次迭代的值和颜色,它们都是正确的。

如果您觉得这是一个肤浅的问题,对不起,请问我如何解决?

  import pandas as pd
  import numpy as np
  import matplotlib.pyplot as plt
  import statistics as st
  import matplotlib.animation as animation

  color=['firebrick','firebrick','firebrick','firebrick']
  a=[1400,1420,1440,1460]
  b=[1000,5000,10000,5000]
  y=1000
  for i in [0,1,2,3]:
       if y<b[i]:
            color[i]='firebrick'
       if y>b[i]:
            color[i]='Blue'

  def update(curr):
       a=[1400,1420,1440,1460]
       b=[1000,5000,10000,5000]
       global color,y
       # check if animation is at the last frame
       if y > 10000: 
             a.event_source.stop()
       plt.cla()
       y=y+100
       print(y)
       for i in [0,1,2,3]:
             if y<b[i]:
                  color[i]='firebrick'
             if y>b[i]:
                  color[i]='Blue'
       print(color)
       plt.axis()
       plt.gca().bar(a,b, align='center',color=color, capsize=10)
       plt.gca().hlines(y, xmin=1400,xmax=1460, color='b')   

 fig = plt.figure()   
 %matplotlib qt
 a = animation.FuncAnimation(fig, update, interval=1000)

1 个答案:

答案 0 :(得分:0)

我刚决定将其保存为GIF文件,并且效果很好

a.save('Desktop/animation.gif', writer='imagemagick', fps=30)