前言

之前我们分享过用Python进行可视化的9种常见方式。其实我们还能让可视化图形逼格更高一些,今天就分享一下如何让可视化秀起来:用Python和matplotlib制作GIF图表。

假如电脑上没有安装ImageMagick,先去这里按照自己的电脑系统下载对应版本,大家也可以通过我们下载:https://www.jb51.net/softs/140766.html,如果我们想用matplotlib的save方法渲染GIF动图,就需要安装ImageMagick。

下图是我们制作的一个动图示例:

有两点需要注意: 图表中的散点不会动,会动的是直线。 X轴标题每一帧都在变化。

下面是我们制作上面GIF图的代码:

import sys

import numpy as np

import matplotlib.pyplot as plt

from matplotlib.animation import FuncAnimation

fig, ax = plt.subplots()

fig.set_tight_layout(True)

# 询问图形在屏幕上的大小和DPI(每英寸点数)

# 注意当把图形保存为文件时,需要为此单独再提供一个DPI

print('fig size: {0} DPI, size in inches {1}'.format(

fig.get_dpi(), fig.get_size_inches()))

# 绘制一个保持不变(不会被重新绘制)的散点图以及初始直线

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轴标签)

# 以元组形式返回这一帧需要重新绘制的物体

line.set_ydata(x - 5 + i)

ax.set_xlabel(label)

return line, ax

if __name__ == '__main__':

# 会为每一帧调用Update函数

# 这里FunAnimation设置一个10帧动画,每帧间隔200ms

anim = FuncAnimation(fig, update, frames=np.arange(0, 10), interval=200)

if len(sys.argv) > 1 and sys.argv[1] == 'save':

anim.save('line.gif', dpi=80, writer='imagemagick')

else:

# Plt.show()会一直循环动画

plt.show()

如果你想换个再酷炫点的主题,可以用seaborn库,只需添加:

import seaborn

那么就会得到下面这张GIF图:

稍微提醒一下:虽然我们这里的GIF图只有10帧,图形内容也很简单,但每一帧仍有160k左右。因为GIF动图不使用跨帧压缩,所以这就让帧比较长的GIF图变得很大。将帧数尽量减少,并且让每一帧的图像再小一点(通过在matplotlib中调整图形大小或DPI)能或多或少有助于缓解这个问题。

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对我们的支持。

参考资料:drawing-animated-gifs-with-matplotlib/

本文标题: 利用Python如何制作好玩的GIF动图详解

本文地址: http://www.cppcns.com/jiaoben/python/234221.html

制作gif动图python_利用Python如何制作好玩的GIF动图详解相关推荐

  1. python 绘制k线图_利用python numpy+matplotlib绘制股票k线图的方法

    一.python numpy + matplotlib 画股票k线图 # -- coding: utf-8 -- import requests import numpy as np from mat ...

  2. python 物理学中的应用_利用python求解物理学中的双弹簧质能系统详解

    前言 本文主要给大家介绍了关于利用python求解物理学中双弹簧质能系统的相关内容,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍吧. 物理的模型如下: 在这个系统里有两个物体,它们的质 ...

  3. python代码物理_利用python求解物理学中的双弹簧质能系统详解

    前言 本文主要给大家介绍了关于利用python求解物理学中双弹簧质能系统的相关内容,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍吧. 物理的模型如下: 在这个系统里有两个物体,它们的质 ...

  4. python 桑基图 地理坐标_利用Python+Excel制作桑基(Sankey)图

    利用Python+Excel制作桑基(Sankey)图 桑基图的简介 桑基图 (Sankey  Diagram),是一种特定类型的流图,用于描述一组值到另一组值的流向.下图为1869年,查尔斯米纳德( ...

  5. 【适合Python语言小白的股价图】利用Python中的matplotlib绘制股价图(非k线图)

    [适合Python语言小白的股价图]利用Python中的matplotlib绘制股价图(非k线图) 代码小白,最近做一家公司的股价复盘用到了matplotlib,在此做个小小的记录.代码的逻辑比较笨, ...

  6. Python中Print()函数的用法___实例详解(二)(全,例多)

    Python中Print()函数的用法___实例详解(二)(全,例多) 目录 十一.Print()小例子 十二.Print()中文输入显示乱码问题 十三.Print()写入文件 十四.print()在 ...

  7. Python必备基本技能——命令行参数args详解

    Python必备基本技能--命令行参数args详解 1. 效果图 2. 源码 2.1 简单命令行参数 2.1 轮廓检测源代码 参考 这篇博客将介绍一项开发人员.工程师和计算机科学家必备的技能--命令行 ...

  8. python判断是否回文_对python判断是否回文数的实例详解

    设n是一任意自然数.若将n的各位数字反向排列所得自然数n1与n相等,则称n为一回文数.例如,若n=1234321,则称n为一回文数:但若n=1234567,则n不是回文数. 上面的解释就是说回文数和逆 ...

  9. python随机生成二维列表_对python产生随机的二维数组实例详解

    对python产生随机的二维数组实例详解 最近找遍了python的各个函数发现无法直接生成随机的二维数组,其中包括random()相关的各种方法,都没有得到想要的结果.最后在一篇博客中受到启发,通过列 ...

最新文章

  1. SAP QM物料主数据里QM Material Authorization Group字段
  2. Ubuntu触摸板使用
  3. jittor和pytorch生成网络对比之unit
  4. 洛谷 - P2045 - 方格取数加强版 - 费用流
  5. Android深度探索读后感第二章
  6. linux vi删除操作,vi删除操作
  7. Spring 3.1,Cloud Foundry和本地开发
  8. 2018/12/13
  9. C++中类成员变量在初始化列表中的初始化顺序
  10. 【Node】新手入门 基于Express,Sequelize、IIS的MVC项目
  11. c语言 stm32结构体赋值,STM32学习笔记9——结构体赋值问题
  12. [AHK]AutoHotKey 快速下单脚本,支持东方财富,大智慧,通达信,同花顺
  13. FIR滤波器和IIR滤波器
  14. 交通标志图——警告标志
  15. Mac效率神器Alfred4以及常用Workflow【文末有福利】
  16. PMP证书含金量再次提升,纳入北京工作居住证办理范围
  17. 微信公众号监听 关注/取消关注事件 消息接收与响应处理(比较细微)
  18. 解决matlab 关于警告(warning)、错误(error)、异常(exception)与断言(assert)问题总结
  19. 服务器无限刷钱bug,魔兽世界怀旧服出现“重大”刷金币BUG,分线的负面影响来的太快...
  20. [hive]hive加载本地数据,然后删除了本地数据也删除了表,这时可以在hdfs垃圾箱找到

热门文章

  1. 金融工程、数理金融研究参考资料集合
  2. 阿里云OSS介绍之一 总体介绍与使用
  3. 深度技术 GHOSTXPSP3 快速装机专业版 V2011.04
  4. 索尼a5100_小身材也有大能耐 索尼A5100微单评测
  5. 《倍增商业成功宝典》全新升级上线!炙夏新品,久等终至!
  6. 【TZCOO】saas WMS 云仓库管理软件的问题
  7. MySql查询语句方法
  8. 数据分析思维分析方法和业务知识——分析方法(一)
  9. 如何将Python项目部署到新电脑上运行?
  10. 简单的3D协作工具,Horizon Worlds也能用来开发VR游戏?