微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在Matplotlib.animation中使用blit = true后如何保存确切的动画?

如何解决在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.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?