如何解决在Matplotlib.animation中使用blit = true后如何保存确切的动画?
我想以傅立叶级数的方式添加圆圈。但是在动画中也存在前一帧。然后添加blit = True
来解决我的问题。但是,当我尝试将动画保存到mp4文件时,我得到了所有叠加的帧。我是matoplotlib
的新手。如果大家能告诉我如何解决问题,那将有很大帮助。我也很困惑如何使用init_func
,这是我的代码:
import matplotlib.pyplot as plt
import numpy as np
from matplotlib import animation
plt.rcParams['animation.ffmpeg_path'] = 'C:/ffmpeg/bin/ffmpeg'
fig = plt.figure()
plt.axis([-50,50,-50,50])
ax = plt.gca()
ax.set_aspect(1)
def init():
# line.set_data([],[])
print('hello1')
return []
def animate(t):
print(t)
x = 0
y = 0
patches = []
balls = []
for i in range(3):
prevx = x
prevy = y
n = 2*i + 1
radius = 15 * (4/(n*np.pi))
x += radius * np.cos(n * t)
y += radius * np.sin(n * t)
#updating main circle
patches.append(ax.add_patch(plt.Circle((prevx,prevy),radius,color='g',fill = False)))
#updating small ball
patches.append(ax.add_patch(plt.Circle((x,y),0.7,color = 'b')))
line,= ax.plot([prevx,x],[ prevy,y],color = 'k',lw=1)
patches.append(line)
return patches
anim = animation.FuncAnimation(fig,animate,frames = np.arange(0,20,0.2),init_func=init,interval=200,blit=True)
FFwriter = animation.FFMpegWriter(fps = 10,bitrate=5000)
anim.save('circle_add.mp4',writer = FFwriter)
plt.show()
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。