极简教程: 使用 matplotlib 绘制 GIF 动图
开门见山,直接上例子:
有如下特点:
- 散点图的部分是不变的;线是移动的
- X 轴标题每一祯改变一次
DEMO 的环境
- Ubuntu 18.04.2 LTS
- conda 4.6.3
- Python 3.7.2
创建 virtualenv
ichexw at n3xt-Studio -> conda create --name matplot-gif python=3.7
ichexw at n3xt-Studio -> conda activate matplot-gif
安装必要的依赖
安装 matplotlib
(matplotlib-gif) ichexw at n3xt-Studio -> conda install matplotlib
安装 imagemagick
(matplotlib-gif) ichexw at n3xt-Studio -> conda install -c conda-forge imagemagick
代码实现
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)# 查看图标的尺寸。如果你保存成 gif 的时候,你需要提供 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)# 更新线和坐标轴标签line.set_ydata(x - 5 + i)ax.set_xlabel(label)# 返回要重绘的对象return line, axif __name__ == '__main__':# FunAnimation 将会在每一帧执行一次 update# frames: 帧数# interval: 每帧的间隔anim = FuncAnimation(fig, update, frames=np.arange(0, 10), interval=200)if len(sys.argv) > 1 and sys.argv[1] == 'save':# 如果第一参数是 save,教会保存成 gif# **重点**# dpi: 保存的尺寸# writer: 使用的渲染器,我们制定成 imagemagickanim.save('line.gif', dpi=80, writer='imagemagick')else:# 否则直接展示plt.show()
极简教程: 使用 matplotlib 绘制 GIF 动图相关推荐
- python matplotlib绘制gif动图以及保存
python matplotlib绘制gif动图以及保存 标签: python matplotlib 谨以此文纪念我两天来的悲剧 昨天我用lstm拟合sin曲线,看到别人画的做的动图很好看,并且还能保 ...
- 【一天一门编程语言】Matlab 语言程序设计极简教程
Matlab 语言程序设计极简教程 用 markdown 格式输出答案. 不少于3000字.细分到2级目录. 文章目录 Matlab 语言程序设计极简教程 简介 Matlab 工作空间 Matlab ...
- 《Kotlin极简教程》第三章 Kotlin基本数据类型
正式上架:<Kotlin极简教程>Official on shelves: Kotlin Programming minimalist tutorial 京东JD:https://item ...
- 负载分析及问题排查极简教程
作者 | Hollis ,来自 | Hollis 平常的工作中,在衡量服务器的性能时,经常会涉及到几个指标,load.cpu.mem.qps.rt等.每个指标都有其独特的意义,很多时候在线上出现问题时 ...
- 高效sql性能优化极简教程
一,sql性能优化基础方法论 对于功能,我们可能知道必须改进什么:但对于性能问题,有时我们可能无从下手.其实,任何计算机应用系统最终队可以归结为: cpu消耗 内存使用 对磁盘,网络或其他I/O设备的 ...
- session一致性架构设计极简教程
一,缘起 什么是session? 服务器为每个用户创建一个会话,存储用户的相关信息,以便多次请求能够定位到同一个上下文. Web开发中,web-server可以自动为同一个浏览器的访问用户自动创建se ...
- 写一个操作系统有多难?自制 os 极简教程
不知道正在阅读本文的你,是否是因为想自己动手写一个操作系统.我觉得可能每个程序员都有个操作系统梦,或许是想亲自动手写出来一个,或许是想彻底吃透操作系统的知识.不论是为了满足程序员们自带的成就感,还是为 ...
- 《Groovy极简教程》第12章 Groovy的JSON包
<Groovy极简教程>第12章 Groovy的JSON包 Groovy自带了转换JSON的功能,相关类都在groovy.json包下.本文参考自Groovy文档 Parsing and ...
- Kotlin极简教程
目录 Kotlin极简教程 前言 视频教程 Kotlin 系统入门到进阶 Kotlin 从入门到放弃 Kotlin 从零基础到进阶 第1章 Kotlin简介 第2章 快速开始:HelloWorld 第 ...
最新文章
- java安卓开发工具_推荐几个非常实用的Android开发工具
- Java中的Iterable与Iterator详解
- .NET设计模式(15):结构型模式专题总结
- 不同版本Eclipse对JDK版本要求
- 分析模式 - 度量与测绘
- 微软颜龄Windows Phone版开发小记
- linux date 常用格式,5、总结Linux常用命令使用格式,并用实例说明。例如echo、screen、date、ifconfig、export等命令...
- 李飞飞:一站式全链路数据管理与服务成为产业布局重点
- .net core精彩实例分享 -- 字符串处理
- 如果有5杯水却来了6个领导,你该怎么办?
- 远程打开其他电脑的computer management
- mysql管理命令 java_Mysql常用命令及操作
- RedHat as4 u2下的oracle9.2.0.4安装
- 深度学习实时表情识别
- linux怎么刷机教程,刷机教程
- 密立根油滴实验实验数据处理
- 1162开放英语4 (2)
- Python实现散点图和散点图矩阵的绘制
- 为程序添加windows注册表
- c语言 feof 死循环,请教:为什么我用while(!feof(fp))时会出现无限循环????