您当前的位置:首页 > 电脑百科 > 程序开发 > 语言 > Python

如何把python绘制的动态图形保存为gif文件或视频

时间:2022-07-26 14:23:26  来源:  作者:A股程序化交易

使用Matplotlib中的matplotlib.animation 方法可以绘制更好看、更有吸引力的动画图形,那如何把这种动画图形保存为Gif动画文件或视频文件呢?本文简述与之相关的方法。把Python/ target=_blank class=infotextkey>Python程序中绘制的动画图形保存为视频格式或gif格式文件,以便播放或发送给其他人,或者插入找文档或网页中。本文分两部分,先介绍python程序绘制简单的动态图形或动画(也可阅读 《python 绘制动画图》这篇文章),然后再介绍如何把绘制的动态图形或动画保存为gif格式文件或视频文件。

先用 Matplotlib.animation 类中的函数 FuncAnimation 创建动态图和动画,如动态折线、柱状图动画,另外还需要使用 figure 函数和 animation 函数,这些都是python使用matplotlib绘制图形时常用的方法。

1. 创建动态折线图

1)绘制动态折线图,代码如下:

import random
import matplotlib
import matplotlib.pyplot as plt
from matplotlib.animation import FuncAnimation

fig = plt.figure(figsize=(15,15))


x,y = [], []
index= count()
def animate(i):
    x.Append(next(index))
    y.append(random.randint(2,20))
    plt.style.use("ggplot")    
    plt.plot(x,y)

ani = FuncAnimation(fig, animate, interval=300)
plt.show()

结果如图1:

如何把python绘制的动态图形保存为gif文件或视频

 

主要代码行说明:

以上代码块中 “ani = FuncAnimation(fig, animate, interval=300)” 这一行中,FuncAnimation() 有三个参数:

1) fig,表示图形参数

指容纳plot图形的对象, 需要创建该对象,或者调用 matplotlib.pyplot.gcf() 函数 ,表示获得当前图形;

2) animate 自定义函数

这是 FuncAnimation 中的动画自定义函数, 要想获得动画图形就要把该参数设定为“animate”,图形就会根据数据持续更新,注意创建图形和数据更新缺一不可。

3) 画面间隔参数 interval

该参数指定画面的更新速度,单位是毫秒。interval=1000 表示该函数运行动画函数,并且每秒钟更新一次。

以上代码块中 “plt.style.use("ggplot")” 这一行,指定动画图形的风格为 “ggplot”,要想了解更多的图形风格,可使用以下代码:

import matplotlib.pyplot as plt

print(plt.style.avAIlable)

输入结果如下:

bmh
classic
dark_background
fast
fivethirtyeight
ggplot
grayscale
seaborn-bright
seaborn-colorblind
seaborn-dark-palette
seaborn-dark
seaborn-darkgrid
seaborn-deep
seaborn-muted
seaborn-notebook
seaborn-paper
seaborn-pastel
seaborn-poster
seaborn-talk
seaborn-ticks
seaborn-white
seaborn-whitegrid
seaborn
Solarize_Light2
tableau-colorblind10
_classic_test

上述代码块输出的图形结果中,两个数轴都是不固定的,这与 Matplotlib Axes Setting 有关,plot函数中也没有定义线的颜色。

2.创建动画图形

代码如下:

import matplotlib.pyplot as plt
from matplotlib.animation import FuncAnimation
%matplotlib qt

fig = plt.figure(figsize=(6,4))
axes = fig.add_subplot(1,1,1)
plt.title("Dynamic Axes")

y1 = [random.randint(-10,10)+(i**1.6)/(random.randint(9,12)) for i in range(0,280,2)]
t = range(len(y1))
x,y=[], []

def animate(i):
    x.append(t[i])
    y.append((y1[i]))
    plt.xlim(i-30,i+3)
    axes.set_ylim(y1[i]-100, y1[i]+100)
    plt.plot(x,y, scaley=True, scalex=True, color="red")

anim = FuncAnimation(fig, animate, interval=100)

输出结果如图2:

如何把python绘制的动态图形保存为gif文件或视频

图2 动态数轴动画

 

保存动态图形

保存Matplotlib绘制的动画可能会出现一些小故障。下面介绍一下常用的选项和参数,既可以节省保存动画所需的时间,又可以尽可能地减少故障;可以把python代码生成的动画保存为个人需要的格式,如gif、mp4、avi、mov等文件格式,这取决于保存时选择对应的参数。

  • 保存为GIF文件--图1,代码如下:
f = r"d:\animation.gif" 
writergif = animation.PillowWriter(fps=30) 
anim.save(f, writer=writergif)

这段代码中,常用的选项有 ImageMagick 和 PillowWriter。

对于windows 操作系统来说,使用 ImageMagick 方法一般要先安装相关程序包,并且在保存动画为 GIF 文件时,建议使用 Write Instance,还是比较复杂;如果是Unix操作系统,ImageMagick一般情况下都已经安装了,使用 ImageMagick 方法 就方便。因此,建议windows用户使用 PillowWriter 方法。

定义 gif 图形的帧数:

修改 FuncAnimation函数中的 save_count 参数的值,设定 GIF 文件的帧数,默认为 100 帧,代码如下:

anim = animation.FuncAnimation(figure, func=update_figure, fargs=(bar_rects, iteration), frames=generator, interval=100, repeat=True, save_count=1500)

示例代码中,把GIF文件的帧数修改为 1500 帧。

 

  • 保存为视频文件

把调用matplotlib的方法生成的动画保存为视频文件,需要 ffmpeg.exe 安装程序,可到官网下载,如下图:

如何把python绘制的动态图形保存为gif文件或视频

 

 

特别注意,安装后要把该运行程序的路径 ffmpegbinffmpeg.exe 添加到环境变量中,此路径一定要正确 并且一定是指向可执行文件,而不仅仅是该文件所在的文件夹。在生成动画的python程序块中要加入以下代码行:

import matplotlib as mpl 
mpl.rcParams['animation.ffmpeg_path'] = r'C:\Users\xx\Desktop\ffmpeg\bin\ffmpeg.exe'

接下来,把 matplotlib 绘制的动画保存为 mp4 格式的视频文件,代码如下:

f = r"d:\animation.mp4" 
writervideo = animation.FFMpegWriter(fps=60) 
anim.save(f, writer=writervideo)

定义视频的尺寸:

视频的尺寸就是用 matplotlib 工具包绘制图形的窗口大小,调整对应窗口的大小即刻,示例代码如下:

plt.subplots(figsize=(12,8))

 

(本文结束)



Tags:动态图   点击:()  评论:()
声明:本站部分内容及图片来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,不构成投资建议。投资者据此操作,风险自担。如有任何标注错误或版权侵犯请与我们联系,我们将及时更正、删除。
▌相关推荐
图神经网络中的动态图结构建模方法研究
图神经网络是一种能够处理图结构数据的人工智能模型,近年来在图像识别、社交网络分析等领域取得了显著的成果。然而,传统的图神经网络往往只能处理静态图结构,无法有效地建模动...【详细内容】
2023-11-28  Search: 动态图  点击:(176)  评论:(0)  加入收藏
怎么把视频做成GIF动态图?GIF的制作
如果您想将视频转换为GIF动态图,不妨先考虑您希望制作的GIF的内容和风格。例如,您需要选择视频的哪一部分作为GIF的素材,以及您希望GIF的大小和分辨率是多少。有很多工具可以帮...【详细内容】
2023-08-08  Search: 动态图  点击:(269)  评论:(0)  加入收藏
如何制作动态图GIF?帮你轻松制作
如何制作动态图GIF?动态图GIF是一种在网络上广泛流行的图像文件格式,它可以通过连续播放静止的图像来创建一个动画效果。如果你想在你的网站或社交媒体上分享一些有趣的动画效...【详细内容】
2023-05-18  Search: 动态图  点击:(306)  评论:(0)  加入收藏
静态图片怎么变成动态图片?
静态图片怎么变成动态图片?当一些朋友在一些平台娱乐时,会发现一些用户分享的视频中的静态图片可以秒变动态图片。事实上,图片除了JPG、PNG等静态格式,还有GIF等动态图片格式。...【详细内容】
2023-02-01  Search: 动态图  点击:(254)  评论:(0)  加入收藏
如何把python绘制的动态图形保存为gif文件或视频
使用Matplotlib中的matplotlib.animation 方法可以绘制更好看、更有吸引力的动画图形,那如何把这种动画图形保存为Gif动画文件或视频文件呢?本文简述与之相关的方法。把python...【详细内容】
2022-07-26  Search: 动态图  点击:(1357)  评论:(0)  加入收藏
用pyecharts制作北京市公交线路动态图
今天教大家用pyecharts制作北京市公交线路动态图,这应该是全网唯一一篇能正常运行的教程 一、获取百度秘钥首先,本项目需要引用百度地图api,所以需要先注册获取百度开放平台秘...【详细内容】
2020-09-09  Search: 动态图  点击:(366)  评论:(0)  加入收藏
如何快速做出酷炫的Excel动态图表?
作为一名天天要跟Excel打交道的 @运营菌 ,反正我认为自己做的图表就挺酷炫的。不信,你们来看看~王者之星 进阶の图表 运营之星 智联之薪上面这些酷炫的动态图表,只是简单运用了...【详细内容】
2020-06-24  Search: 动态图  点击:(519)  评论:(0)  加入收藏
▌简易百科推荐
一篇文章教会你使用Python中三种简单的函数
所谓函数,就是指:把某些特定功能的代码组成为一个整体,这个整体就叫做函数。一、函数简介所谓函数,就是指:把某些特定功能的代码组成为一个整体,这个整体就叫做函数。二、函数定义...【详细内容】
2024-04-11  Go语言进阶学习  微信公众号  Tags:Python   点击:(12)  评论:(0)  加入收藏
一篇文章带你了解Python的分布式进程接口
在Thread和Process中,应当优选Process,因为Process更稳定,而且,Process可以分布到多台机器上,而Thread最多只能分布到同一台机器的多个CPU上。一、前言在Thread和Process中,应当优...【详细内容】
2024-04-11  Go语言进阶学习    Tags:Python   点击:(10)  评论:(0)  加入收藏
Python 可视化:Plotly 库使用基础
当使用 Plotly 进行数据可视化时,我们可以通过以下示例展示多种绘图方法,每个示例都会有详细的注释和说明。1.创建折线图import plotly.graph_objects as go# 示例1: 创建简单...【详细内容】
2024-04-01  Python技术    Tags:Python   点击:(15)  评论:(0)  加入收藏
Python 办公神器:教你使用 Python 批量制作 PPT
介绍本文将介绍如何使用openpyxl和pptx库来批量制作PPT奖状。本文假设你已经安装了python和这两个库。本文的场景是:一名基层人员,要给一次比赛活动获奖的500名选手制作奖状,并...【详细内容】
2024-03-26  Python技术  微信公众号  Tags:Python   点击:(21)  评论:(0)  加入收藏
Python实现工厂模式、抽象工厂,单例模式
工厂模式是一种常见的设计模式,它可以帮助我们创建对象的过程更加灵活和可扩展。在Python中,我们可以使用函数和类来实现工厂模式。一、Python中实现工厂模式工厂模式是一种常...【详细内容】
2024-03-07  Python都知道  微信公众号  Tags:Python   点击:(38)  评论:(0)  加入收藏
不可不学的Python技巧:字典推导式使用全攻略
Python的字典推导式是一种优雅而强大的工具,用于创建字典(dict)。这种方法不仅代码更加简洁,而且执行效率高。无论你是Python新手还是有经验的开发者,掌握字典推导式都将是你技能...【详细内容】
2024-02-22  子午Python  微信公众号  Tags:Python技巧   点击:(43)  评论:(0)  加入收藏
如何进行Python代码的代码重构和优化?
Python是一种高级编程语言,它具有简洁、易于理解和易于维护的特点。然而,代码重构和优化对于保持代码质量和性能至关重要。什么是代码重构?代码重构是指在不改变代码外部行为的...【详细内容】
2024-02-22  编程技术汇    Tags:Python代码   点击:(44)  评论:(0)  加入收藏
Python开发者必备的八个PyCharm插件
在编写代码的过程中,括号几乎无处不在,以至于有时我们会拼命辨别哪个闭合括号与哪个开头的括号相匹配。这款插件能帮助解决这个众所周知的问题。前言在PyCharm中浏览插件列表...【详细内容】
2024-01-26  Python学研大本营  微信公众号  Tags:PyCharm插件   点击:(92)  评论:(0)  加入收藏
Python的Graphlib库,再也不用手敲图结构了
Python中的graphlib库是一个功能强大且易于使用的工具。graphlib提供了许多功能,可以帮助您创建、操作和分析图形对象。本文将介绍graphlib库的主要用法,并提供一些示例代码和...【详细内容】
2024-01-26  科学随想录  微信公众号  Tags:Graphlib库   点击:(95)  评论:(0)  加入收藏
Python分布式爬虫打造搜索引擎
简单分布式爬虫结构主从模式是指由一台主机作为控制节点负责所有运行网络爬虫的主机进行管理,爬虫只需要从控制节点那里接收任务,并把新生成任务提交给控制节点就可以了,在这个...【详细内容】
2024-01-25  大雷家吃饭    Tags:Python   点击:(63)  评论:(0)  加入收藏
站内最新
站内热门
站内头条