使用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函数式编程指南(二):从函数开始
Jun 24 Python
python使用电子邮件模块smtplib的方法
Aug 28 Python
Python切换pip安装源的方法详解
Nov 18 Python
Python使用pyh生成HTML文档的方法示例
Mar 10 Python
10分钟教你用python动画演示深度优先算法搜寻逃出迷宫的路径
Aug 12 Python
关于Python形参打包与解包小技巧分享
Aug 24 Python
python-docx文件定位读取过程(尝试替换)
Feb 13 Python
python numpy--数组的组合和分割实例
Feb 24 Python
探秘TensorFlow 和 NumPy 的 Broadcasting 机制
Mar 13 Python
Pytorch 解决自定义子Module .cuda() tensor失败的问题
Jun 23 Python
python爬虫中url管理器去重操作实例
Nov 30 Python
虚拟环境及venv和virtualenv的区别说明
Feb 05 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
解析在PHP中使用mysqli扩展库对mysql的操作
2013/07/03 PHP
php字符串截取函数用法分析
2014/11/25 PHP
解决yii2左侧菜单子级无法高亮问题的方法
2016/05/08 PHP
PHP array_reverse() 函数原理及实例解析
2020/07/14 PHP
Javascript 学习笔记 错误处理
2009/07/30 Javascript
基于jQuery的固定表格头部的代码(IE6,7,8测试通过)
2010/05/18 Javascript
iphone safari不支持position fixed的解决方法
2012/05/04 Javascript
如何在一个页面显示多个百度地图
2013/04/07 Javascript
js onload处理html页面加载之后的事件
2013/10/30 Javascript
JavaScript实现的encode64加密算法实例分析
2015/04/15 Javascript
JS中常用的正则表达式
2016/09/29 Javascript
Bootstrap按钮组实例详解
2017/07/03 Javascript
JavaScript实现的浏览器下载文件的方法
2017/08/09 Javascript
jQuery实现每隔一段时间自动更换样式的方法分析
2018/05/03 jQuery
vue实现计步器功能
2019/11/01 Javascript
微信小程序全选多选效果实现代码解析
2020/01/21 Javascript
Python生成随机MAC地址
2015/03/10 Python
Python与人工神经网络:使用神经网络识别手写图像介绍
2017/12/19 Python
python删除过期log文件操作实例解析
2018/01/31 Python
利用python打开摄像头及颜色检测方法
2018/08/03 Python
Python依赖包整体迁移方法详解
2019/08/15 Python
python实现的按要求生成手机号功能示例
2019/10/08 Python
opencv3/Python 稠密光流calcOpticalFlowFarneback详解
2019/12/11 Python
python3的pip路径在哪
2020/06/23 Python
解决tensorflow 释放图,删除变量问题
2020/06/23 Python
Booking.com缤客中国:全球酒店在线预订网站
2020/05/03 全球购物
JAVA程序员自荐书
2014/01/30 职场文书
《台湾的蝴蝶谷》教学反思
2014/02/20 职场文书
学习决心书
2014/03/11 职场文书
四群教育工作实施方案
2014/03/26 职场文书
阳光体育活动总结
2014/04/30 职场文书
县政府班子个人对照检查材料
2014/10/05 职场文书
杭白菊导游词
2015/02/10 职场文书
导游经典开场白——导游词
2019/04/17 职场文书
MySQL快速插入一亿测试数据
2021/06/23 MySQL
Go gRPC进阶教程gRPC转换HTTP
2022/06/16 Golang