使用numpngw和matplotlib生成png动画的示例代码


Posted in Python onJanuary 24, 2021

在matplotlib官网看到了第三方库numpngw的简介,利用该库作为插件可以辅助matplotlib生成png动画。

numpngw概述

numpngw库可生成PNG静态图像和PNG动画。

  • 通过write_png函数可以将 numpy保存为PNG 文件。
  • 通过 write_apng 函数可以将数组序列保存为 PNG 动画(APNG)文件 。
  • 通过AnimatedPNGWriter类可以将Matplotlib 保存为PNG动画文件。

numpngw库的依赖包是numpy和setuptools。

使用numpngw和matplotlib生成png动画

numpngw+matplotlib实现png动画

import numpy as np
from matplotlib import pyplot as plt
import matplotlib.animation as animation
from numpngw import AnimatedPNGWriter

t = np.linspace(0, 6, 100)
x = 16 * np.sin(t) ** 3
y = 13 * np.cos(t) - 5 * np.cos(2 * t) - 2 * np.cos(3 * t) - np.cos(4 * t)
data=[i for i in zip(x,y)]

def plot_love(data):
  x, y = data
  plt.scatter(x, y, 60, c="r", alpha=0.7, marker=r"$\heartsuit$")
fig=plt.figure(figsize=(5, 3), dpi=100)
plt.axis("off")

writer = AnimatedPNGWriter(fps=12)
animator = animation.FuncAnimation(fig, plot_love, frames=data)
animator.save("love.png", writer=writer)

使用matplotlib和pillow实现gif动画

from matplotlib import pyplot as plt
import matplotlib.animation as animation
import numpy as np

t = np.linspace(0, 6, 100)
x = 16 * np.sin(t) ** 3
y = 13 * np.cos(t) - 5 * np.cos(2 * t) - 2 * np.cos(3 * t) - np.cos(4 * t)
data=[i for i in zip(x,y)]

def plot_love(data):
  x, y = data
  plt.scatter(x, y, 60, c="r", alpha=0.7, marker=r"$\heartsuit$")

fig=plt.figure(figsize=(5, 3), dpi=100)
plt.axis("off")
animator = animation.FuncAnimation(fig, plot_love, frames=data, interval=80)
animator.save("love.gif", writer='pillow')

关键代码解读

# 导入AnimatedPNGWriter
from numpngw import AnimatedPNGWriter

# 初始化AnimatedPNGWriter
writer = AnimatedPNGWriter(fps=12)
# 将save函数中的writer参数设为AnimatedPNGWriter实例
animator.save("love.png", writer=writer)

通过对比可知,使用 numpngw+matplotlib生成png动画方式非常简单,只用初始化AnimatedPNGWriter,在save函数中指定writer即可。

到此这篇关于使用numpngw和matplotlib生成png动画的示例代码的文章就介绍到这了,更多相关numpngw和matplotlib生成png动画内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
python中如何使用朴素贝叶斯算法
Apr 06 Python
requests和lxml实现爬虫的方法
Jun 11 Python
Python数据分析之如何利用pandas查询数据示例代码
Sep 01 Python
Tensorflow:转置函数 transpose的使用详解
Feb 11 Python
Python如何把Spark数据写入ElasticSearch
Apr 18 Python
python把一个字符串切开的实例方法
Sep 27 Python
python mock测试的示例
Oct 19 Python
opencv+pyQt5实现图片阈值编辑器/寻色块阈值利器
Nov 13 Python
python re模块常见用法例举
Mar 01 Python
python和opencv构建运动检测器的实现
Mar 03 Python
python使用torch随机初始化参数
Mar 22 Python
python实现一个简单的贪吃蛇游戏附代码
Jun 28 Python
详解如何修改jupyter notebook的默认目录和默认浏览器
Jan 24 #Python
详解修改Anaconda中的Jupyter Notebook默认工作路径的三种方式
Jan 24 #Python
浅析python字符串前加r、f、u、l 的区别
Jan 24 #Python
python 图像增强算法实现详解
Jan 24 #Python
详解用 python-docx 创建浮动图片
Jan 24 #Python
Python爬虫入门教程02之笔趣阁小说爬取
Jan 24 #Python
Python爬虫入门教程01之爬取豆瓣Top电影
Jan 24 #Python
You might like
第四节 构造函数和析构函数 [4]
2006/10/09 PHP
最小化数据传输――在客户端存储数据
2006/10/09 PHP
深入理解PHP之require/include顺序 推荐
2011/01/02 PHP
php+ajax实现无刷新分页的方法
2014/11/04 PHP
深入php内核之php in array
2015/11/10 PHP
laravel5.6 框架操作数据 Eloquent ORM用法示例
2020/01/26 PHP
显示js对象所有属性和方法的函数
2009/10/16 Javascript
js中访问html中iframe的文档对象的代码[IE6,IE7,IE8,FF]
2011/01/08 Javascript
jQuery 源码分析笔记(2) 变量列表
2011/05/28 Javascript
js中通过split函数分割字符串成数组小例子
2013/09/21 Javascript
JavaScript判断访问的来源是手机还是电脑,用的哪种浏览器
2013/12/12 Javascript
ie 7/8不支持trim的属性的解决方案
2014/05/23 Javascript
JavaScript中数组去除重复的三种方法
2016/04/22 Javascript
JQuery validate插件Remote用法大全
2016/05/15 Javascript
javascript 常用验证函数总结
2016/06/28 Javascript
详解微信小程序开发之下拉刷新 上拉加载
2016/11/24 Javascript
js中let和var定义变量的区别
2018/02/08 Javascript
Vue单页及多页应用全局配置404页面实践记录
2018/05/22 Javascript
解决bootstrap中下拉菜单点击后不关闭的问题
2018/08/10 Javascript
使用layui+ajax实现简单的菜单权限管理及排序的方法
2019/09/10 Javascript
element 中 el-menu 组件的无限极循环思路代码详解
2020/04/26 Javascript
vue 组件间的通信之子组件向父组件传值的方式
2020/07/29 Javascript
python字典的setdefault的巧妙用法
2019/08/07 Python
Pytorch实现各种2d卷积示例
2019/12/30 Python
Python多线程实现支付模拟请求过程解析
2020/04/21 Python
python如何调用java类
2020/07/05 Python
Java基础面试题
2014/07/19 面试题
《陶罐和铁罐》教学反思
2014/02/19 职场文书
一份文言文检讨书
2014/09/13 职场文书
大学生推广普通话演讲稿
2014/09/21 职场文书
政风行风整改报告
2014/11/06 职场文书
自主招生自荐信格式范文
2015/03/25 职场文书
2015年行政部工作总结
2015/04/28 职场文书
一文读懂navicat for mysql基础知识
2021/05/31 MySQL
Ajax异步刷新功能及简单案例
2021/11/20 Javascript
TypeScript实用技巧 Nominal Typing名义类型详解
2022/09/23 Javascript