利用Python如何制作好玩的GIF动图详解

 更新时间:2018年07月11日 10:59:20   作者:集智小编  
这篇文章主要给大家介绍了关于利用Python如何制作好玩的GIF动图的相关资料,实现的方法主要利用ImageMagick,文中通过示例代码介绍的非常详细,需要的朋友可以参考借鉴,下面随着小编来一起学习学习吧

前言

之前我们分享过用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实现检测文件MD5值的方法示例

    Python实现检测文件MD5值的方法示例

    这篇文章主要介绍了Python实现检测文件MD5值的方法,涉及Python针对大文件的读取、判断、运算、加密等相关操作技巧,需要的朋友可以参考下
    2018-04-04
  • 使用Python将Mysql的查询数据导出到文件的方法

    使用Python将Mysql的查询数据导出到文件的方法

    今天小编就为大家分享一篇关于使用Python将Mysql的查询数据导出到文件的方法,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2019-02-02
  • Python matplotlib底层原理解析

    Python matplotlib底层原理解析

    这篇文章主要介绍了Python matplotlib底层原理,下面文章围绕Python matplotlib底层原理的相关资料展开详细内容,具有一定的参考价值,需要的朋友可以参考下
    2021-12-12
  • Django框架静态文件使用/中间件/禁用ip功能实例详解

    Django框架静态文件使用/中间件/禁用ip功能实例详解

    这篇文章主要介绍了Django框架静态文件使用/中间件/禁用ip功能,结合实例形式详细分析了Django框架静态文件的使用、中间件的原理、操作方法以及禁用ip功能相关实现技巧,需要的朋友可以参考下
    2019-07-07
  • python使用ProjectQ生成量子算法指令集

    python使用ProjectQ生成量子算法指令集

    在量子计算机领域,由于实现方案的不同,在不同的体系内的指令集其实是不一样的,并不是说OpenQASM里面的所有指令都会被支持。但是这也没有关系,因为本文将要介绍的开源量子计算模拟器框架ProjectQ可以支持将输入的量子算法分解到对应的指令集中。
    2021-05-05
  • python深度学习tensorflow卷积层示例教程

    python深度学习tensorflow卷积层示例教程

    这篇文章主要为大家介绍了python深度学习tensorflow卷积层示例教程,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-06-06
  • python操作SqlServer获取特定表的所有列名(推荐)

    python操作SqlServer获取特定表的所有列名(推荐)

    这篇文章主要介绍了python操作SqlServer获取特定表的所有列名,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-08-08
  • python在命令行下使用google翻译(带语音)

    python在命令行下使用google翻译(带语音)

    这篇文章主要介绍了使用google翻译服务获得翻译和语音的示例,大家参考使用吧
    2014-01-01
  • 解决安装python3.7.4报错Can''''t connect to HTTPS URL because the SSL module is not available

    解决安装python3.7.4报错Can''''t connect to HTTPS URL because the S

    这篇文章主要介绍了解决安装python3.7.4报错Can't connect to HTTPS URL because the SSL module is not available,本文给大家简单分析了错误原因,给出了解决方法,需要的朋友可以参考下
    2019-07-07
  • 查看Python安装路径几种方法

    查看Python安装路径几种方法

    在使用python的时候,有时候会需要找到python包的安装位置,本文主要介绍了查看Python安装路径几种方法,具有一定的参考价值,感兴趣的可以了解一下
    2023-09-09

最新评论