教你用Python matplotlib库制作简单的动画


Posted in Python onJune 11, 2021

matplotlib制作简单的动画

动画即是在一段时间内快速连续的重新绘制图像的过程.

matplotlib提供了方法用于处理简单动画的绘制:

import matplotlib.animation as ma
def update(number):
    pass

# 每隔30毫秒,执行一次update
ma.FuncAnimation(
    mp.gcf(),   # 作用域当前窗体
    update,     # 更新函数的函数名
    interval=30 # 每隔30毫秒,执行一次update
)

案例1:

随机生成各种颜色的100个气泡, 让他们不断增大.

1.随机生成100个气泡.

2.每个气泡拥有四个属性: position, size, growth, color

3.把每个气泡绘制到窗口中.

4.开启动画,在update函数中更新每个气泡的属性并重新绘制

"""
简单动画
1. 随机生成100个气泡.
2. 每个气泡拥有四个属性: position, size, growth, color
3. 把每个气泡绘制到窗口中.
4. 开启动画,在update函数中更新每个气泡的属性并重新绘制
"""
import numpy as np
import matplotlib.pyplot as mp
import matplotlib.animation as ma

n = 100
balls = np.zeros(n, dtype=[
		('position', float, 2), # 位置属性
		('size', float, 1),     # 大小属性
		('growth', float, 1),   # 生长速度
		('color', float, 4)])   # 颜色属性
# 初始化每个泡泡
# uniform: 从0到1取随机数,填充n行2列的数组
balls['position']=np.random.uniform(0,1,(n,2))
balls['size']=np.random.uniform(50,70,n)
balls['growth']=np.random.uniform(10,20,n)
balls['color']=np.random.uniform(0,1,(n,4))
# 绘制100个泡泡
mp.figure('Bubble', facecolor='lightgray')
mp.title('Bubble', fontsize=18)
mp.xticks([])
mp.yticks([])
sc = mp.scatter(balls['position'][:,0], 
	       balls['position'][:,1],
	       balls['size'], 
	       color=balls['color'])

# 启动动画
def update(number):
	balls['size'] += balls['growth']
	# 让某个泡泡破裂,从头开始执行
	boom_i = number % n
	balls[boom_i]['size'] = 60
	balls[boom_i]['position']= \
			np.random.uniform(0, 1, (1, 2))
	# 重新设置属性
	sc.set_sizes(balls['size'])
	sc.set_offsets(balls['position'])

anim = ma.FuncAnimation(
	mp.gcf(), update, interval=30)

mp.show()

教你用Python matplotlib库制作简单的动画

案例2

"""
模拟心电图
"""
import numpy as np
import matplotlib.pyplot as mp
import matplotlib.animation as ma

mp.figure('Signal', facecolor='lightgray')
mp.title('Signal', fontsize=16)
mp.xlim(0, 10)
mp.ylim(-3, 3)
mp.grid(linestyle=':')
pl = mp.plot([],[], color='dodgerblue',
		label='Signal')[0]
# 启动动画
def update(data):
	t, v = data
	x, y = pl.get_data()  #x y: ndarray数组
	x = np.append(x, t)
	y = np.append(y, v)
	# 重新绘制图像
	pl.set_data(x, y)
	# 移动坐标轴
	if x[-1]>5:
		mp.xlim(x[-1]-5, x[-1]+5)

x = 0
def generator():
	global x
	y = np.sin(2 * np.pi * x) * \
		np.exp(np.sin(0.2 * np.pi * x))
	yield (x, y)
	x += 0.05

anim = ma.FuncAnimation(mp.gcf(), 
	update, generator, interval=30)
mp.show()

教你用Python matplotlib库制作简单的动画

到此这篇关于教你用Python matplotlib制作简单的动画的文章就介绍到这了,更多相关matplotlib制作动画内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
Python 文件重命名工具代码
Jul 26 Python
Python爬虫框架Scrapy实战之批量抓取招聘信息
Aug 07 Python
Python中文件的读取和写入操作
Apr 27 Python
解决每次打开pycharm直接进入项目的问题
Oct 28 Python
Python面向对象基础入门之设置对象属性
Dec 11 Python
python应用文件读取与登录注册功能
Sep 23 Python
使用TensorFlow-Slim进行图像分类的实现
Dec 31 Python
mac在matplotlib中显示中文的操作方法
Mar 06 Python
Python参数传递及收集机制原理解析
Jun 05 Python
python的数学算法函数及公式用法
Nov 18 Python
python使用matplotlib的savefig保存时图片保存不完整的问题
Jan 08 Python
python解析json数据
Apr 29 Python
PyQt5实现多张图片显示并滚动
pyqt5蒙版遮罩mask,setmask的使用
详解Python描述符的工作原理
用Python爬取各大高校并可视化帮弟弟选大学,弟弟直呼牛X
用python修改excel表某一列内容的操作方法
Windows安装Anaconda3的方法及使用过程详解
Python Flask请求扩展与中间件相关知识总结
Jun 11 #Python
You might like
PHP 常用函数库和一些实用小技巧
2009/01/01 PHP
laravel 创建命令行命令的图文教程
2019/10/23 PHP
js 多浏览器分别判断代码
2010/04/01 Javascript
javascript与CSS复习(《精通javascript》)
2010/06/29 Javascript
电子商务网站上的常用的js放大镜效果
2011/12/08 Javascript
动态加载js、css等文件跨iframe实现
2014/02/24 Javascript
自写的jQuery异步加载数据添加事件
2014/05/15 Javascript
Javascript获取CSS伪元素属性的实现代码
2014/09/28 Javascript
JavaScript中的原型链prototype介绍
2014/12/30 Javascript
js分页工具实例
2015/01/28 Javascript
javascript将DOM节点添加到文档的方法实例分析
2015/08/04 Javascript
AngularJS前端页面操作之用户修改密码功能示例
2017/03/27 Javascript
.net MVC+Bootstrap下使用localResizeIMG上传图片
2017/04/21 Javascript
详解基于vue-cli3.0如何构建功能完善的前端架子
2018/10/09 Javascript
JS 事件机制完整示例分析
2020/01/15 Javascript
微信小程序canvas开发水果老虎机的思路详解
2020/02/07 Javascript
基于JavaScript实现大文件上传后端代码实例
2020/08/18 Javascript
[01:00:52]2018DOTA2亚洲邀请赛 4.4 淘汰赛 EG vs LGD 第一场
2018/04/05 DOTA
在Django框架中编写Context处理器的方法
2015/07/20 Python
修复CentOS7升级Python到3.6版本后yum不能正确使用的解决方法
2018/01/26 Python
Python2.7.10以上pip更新及其他包的安装教程
2018/06/12 Python
Python学习笔记之Zip和Enumerate用法实例分析
2019/08/14 Python
win10从零安装配置pytorch全过程图文详解
2020/05/08 Python
Python collections.defaultdict模块用法详解
2020/06/18 Python
简单掌握CSS3中resize属性的用法
2016/04/01 HTML / CSS
详解HTML5新增标签
2017/11/27 HTML / CSS
详解如何将 Canvas 绘制过程转为视频
2021/01/25 HTML / CSS
Clarisonic美国官网:科莱丽声波洁面仪
2017/10/12 全球购物
暑期实践思想汇报
2014/01/06 职场文书
安卓程序员求职信
2014/02/28 职场文书
五一劳动节活动记录
2014/03/23 职场文书
医学生就业推荐表自我鉴定
2014/03/26 职场文书
竞选班干部演讲稿
2014/04/24 职场文书
教师学习三严三实心得体会
2014/10/13 职场文书
2016形势与政策学习心得体会
2016/01/12 职场文书
MySQL中rank() over、dense_rank() over、row_number() over用法介绍
2022/03/23 MySQL