最新公告
  • 欢迎您光临起源地模板网,本站秉承服务宗旨 履行“站长”责任,销售只是起点 服务永无止境!立即加入钻石VIP
  • python如何制作动态画面?

    正文概述    2020-01-26   166

    python如何制作动态画面?

    python动图的核心函数是matplotlib.animation.FuncAnimation,基本用法是:

    anim = animation.funcanimation(fig, animate, init_func=init, frames=100, interval=20, blit=true)
    # fig: 是我们创建的画布
    # animat: 是重点,是我们每个时刻要更新图形对象的函数,返回值和init_func相同
    # init_func: 初始化函数,其返回值就是每次都要更新的对象,
    #    告诉FuncAnimation在不同时刻要更新哪些图形对象
    # frames: 相当于时刻t,要模拟多少帧图画,不同时刻的t相当于animat的参数
    # interval: 刷新频率,毫秒
    # blit: blit是一个非常重要的关键字,它告诉动画只重绘修改的部分,结合上面保存的时间,
    #    blit=true会使动画显示得会非常非常快

    示例:

    import numpy as np
    import matplotlib.pyplot as plt
    from matplotlib.animation import FuncAnimation  # 动图的核心函数
    import seaborn as sns  # 美化图形的一个绘图包
    
    sns.set_style("whitegrid")  # 设置图形主图
    
    # 创建画布
    fig, ax = plt.subplots()
    fig.set_tight_layout(True)
    
    # 画出一个维持不变(不会被重画)的散点图和一开始的那条直线。
    x = np.arange(0, 20, 0.1)
    ax.scatter(x, x + np.random.normal(0, 3.0, len(x)))
    line, = ax.plot(x, x - 5, 'r-', linewidth=2)
    
    def update(i):
        label = 'timestep {0}'.format(i)
        print(label)
        # 更新直线和x轴(用一个新的x轴的标签)。
        # 用元组(Tuple)的形式返回在这一帧要被重新绘图的物体
        line.set_ydata(x - 5 + i)  # 这里是重点,更新y轴的数据
        ax.set_xlabel(label)    # 这里是重点,更新x轴的标签
        return line, ax
    
    # FuncAnimation 会在每一帧都调用“update” 函数。
    # 在这里设置一个10帧的动画,每帧之间间隔200毫秒
    anim = FuncAnimation(fig, update, frames=np.arange(0, 10), interval=200)

    生成GIF动图:

    安装imageio库;接着如下代码中的注释,首先读取静态图到列表,作为GIF的每一帧;接着设置输入(静态图)、输出(动态图)和一些必要参数,我们这里设置每一帧间隔时间为1.5秒,默认是1秒,之后调用miageio.mimsave函数去保存结果。

    '''
    Author: Solarzhou
    Email: tzhou@foxmail.com
    公众号:Solarzhou
    '''
    import imageio
    def create_gif(image_list, gif_name, duration = 1.0):
        '''
        :param image_list: 这个列表用于存放生成动图的图片
        :param gif_name: 字符串,所生成gif文件名,带.gif后缀
        :param duration: 图像间隔时间
        :return:
        '''
        frames = []
        for image_name in image_list:
            frames.append(imageio.imread(image_name))
    
        imageio.mimsave(gif_name, frames, 'GIF', duration=duration)
        return
    
    def main():
        #这里放上自己所需要合成的图片
        image_list = ['1.jpg', '2.jpg', '3.jpg']
        gif_name = 'new.gif'
        duration = 1.5
        create_gif(image_list, gif_name, duration)
    
    if __name__ == '__main__':
        main()

    更多Python知识请关注Python视频教程栏目。


    起源地下载网 » python如何制作动态画面?

    常见问题FAQ

    免费下载或者VIP会员专享资源能否直接商用?
    本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。
    提示下载完但解压或打开不了?
    最常见的情况是下载不完整: 可对比下载完压缩包的与网盘上的容量,若小于网盘提示的容量则是这个原因。这是浏览器下载的bug,建议用百度网盘软件或迅雷下载。若排除这种情况,可在对应资源底部留言,或 联络我们.。
    找不到素材资源介绍文章里的示例图片?
    对于PPT,KEY,Mockups,APP,网页模版等类型的素材,文章内用于介绍的图片通常并不包含在对应可供下载素材包内。这些相关商业图片需另外购买,且本站不负责(也没有办法)找到出处。 同样地一些字体文件也是这种情况,但部分素材会在素材包内有一份字体下载链接清单。
    模板不会安装或需要功能定制以及二次开发?
    请QQ联系我们

    发表评论

    还没有评论,快来抢沙发吧!

    如需帝国cms功能定制以及二次开发请联系我们

    联系作者

    请选择支付方式

    ×
    迅虎支付宝
    迅虎微信
    支付宝当面付
    余额支付
    ×
    微信扫码支付 0 元