极客小将

您现在的位置是:首页 » python编程资讯

资讯内容

python如何制作动态画面?

极客小将2020-12-20-
简介python动图的核心函数是matplotlib.animation.FuncAnimation,基本用法是:anim = animation.funcanimation(fig, animate, init_func=init, frames=10

bl5少儿编程网-Scratch_Python_教程_免费儿童编程学习平台

python动图的核心函数是matplotlib.animation.FuncAnimation,基本用法是:bl5少儿编程网-Scratch_Python_教程_免费儿童编程学习平台

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会使动画显示得会非常非常快

示例:
bl5少儿编程网-Scratch_Python_教程_免费儿童编程学习平台

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动图:bl5少儿编程网-Scratch_Python_教程_免费儿童编程学习平台

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

''' 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视频教程栏目。bl5少儿编程网-Scratch_Python_教程_免费儿童编程学习平台

网友点评

共有5条评论来说两句吧...

在线客服