我想在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()
Run Code Online (Sandbox Code Playgroud)
我必须承认,我不太清楚我应该做些什么来消除这个缺陷.我所知道的唯一的例子是条形图没有叠加在框架中(更确切地说,我指的是以下链接的第一个答案的代码):
似乎我不得不告诉动画如何使用set_height-method设置每个帧的每个条的高度.但正如我所说,我真的不知道上面的例子中有什么问题.谢谢你的帮助!
马丁