我想在Python中制作一个动画条形图,并将此动画保存为mp4格式。 我的问题是,保存的视频帧会重叠,尽管我使用“blit = True”告诉动画只绘制从一帧到下一帧变化的内容。 令人惊讶的是,在Python的内置预览中不会出现此问题。 这是反映我的情况的最小化示例:
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()
我必须承认我不太确定该如何消除这个缺陷。我知道的唯一一个在框架中没有重叠条的示例在这里(更确切地说,我是指以下链接的第一个答案的代码): 动态更新matplotlib中的条形图 似乎我需要以某种方式告诉动画如何使用set_height方法在每个帧上设置每个条的高度。但正如我所说,我真的不知道上面的示例有什么问题。谢谢任何帮助!
马丁