在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 (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...