教你用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自动化运维_文件内容差异对比分析
Dec 13 Python
将Python字符串生成PDF的实例代码详解
May 17 Python
python实现自动化上线脚本的示例
Jul 01 Python
解决python flask中config配置管理的问题
Jul 26 Python
Python基于BeautifulSoup和requests实现的爬虫功能示例
Aug 02 Python
selenium+python实现自动登陆QQ邮箱并发送邮件功能
Dec 13 Python
Python使用扩展库pywin32实现批量文档打印实例
Apr 09 Python
Python通过类的组合模拟街道红绿灯
Sep 16 Python
Python xlrd/xlwt 创建excel文件及常用操作
Sep 24 Python
4款Python 类型检查工具,你选择哪个呢?
Oct 30 Python
python绘制雷达图实例讲解
Jan 03 Python
python爬虫破解字体加密案例详解
Mar 02 Python
PyQt5实现多张图片显示并滚动
pyqt5蒙版遮罩mask,setmask的使用
详解Python描述符的工作原理
用Python爬取各大高校并可视化帮弟弟选大学,弟弟直呼牛X
用python修改excel表某一列内容的操作方法
Windows安装Anaconda3的方法及使用过程详解
Python Flask请求扩展与中间件相关知识总结
Jun 11 #Python
You might like
Zerg兵种介绍
2020/03/14 星际争霸
PHP中几种常见的超时处理全面总结
2012/09/11 PHP
PHP+Ajax异步带进度条上传文件实例
2016/11/01 PHP
jQuery表格插件datatables用法总结
2014/09/05 Javascript
JavaScript数组Array对象增加和删除元素方法总结
2015/01/20 Javascript
JavaScript设置body高度为浏览器高度的方法
2015/02/09 Javascript
jQuery实现的checkbox级联选择下拉菜单效果示例
2016/12/26 Javascript
jQuery表单元素选择器代码实例
2017/02/06 Javascript
nodejs入门教程五:连接数据库的方法分析
2017/04/24 NodeJs
移动web开发之touch事件实例详解
2018/01/17 Javascript
Angular4学习笔记router的简单使用
2018/03/30 Javascript
爬虫利器Puppeteer实战
2019/01/09 Javascript
webpack的pitching loader详解
2019/09/23 Javascript
Vue 实现html中根据类型显示内容
2019/10/28 Javascript
Openlayers实现距离面积测量
2020/09/28 Javascript
JavaScript点击按钮生成4位随机验证码
2021/01/28 Javascript
[12:36]《DOTA2》国服注册与激活指南全攻略
2013/04/28 DOTA
使用PYTHON创建XML文档
2012/03/01 Python
Python中read()、readline()和readlines()三者间的区别和用法
2017/07/30 Python
pandas中去除指定字符的实例
2018/05/18 Python
浅谈django三种缓存模式的使用及注意点
2018/09/30 Python
python实现查找所有程序的安装信息
2020/02/18 Python
Python3 hashlib密码散列算法原理详解
2020/03/30 Python
python和php哪个容易学
2020/06/19 Python
Python实现数字的格式化输出
2020/08/01 Python
欧洲最大的滑雪假期供应商之一:Sunweb Holidays
2018/01/06 全球购物
阿根廷首家户外用品制造商和经销商:Montagne
2018/02/12 全球购物
周仰杰(JIMMY CHOO)英国官方网站:闻名世界的鞋子品牌
2018/10/28 全球购物
Halston Heritage官网:简洁的日装,稍显奢华的晚装
2018/11/20 全球购物
日本高岛屋百货购物网站:TAKASHIMAYA
2019/03/24 全球购物
MaBelle玛贝尔香港官网:香港钻饰连锁店
2019/09/09 全球购物
信号量和自旋锁的区别?如何选择使用?
2015/09/08 面试题
大学毕业生管理学求职信
2014/09/01 职场文书
小学教师工作总结2015
2015/04/07 职场文书
vue点击弹窗自动触发点击事件的解决办法(模拟场景)
2021/05/25 Vue.js
Python实现Matplotlib,Seaborn动态数据图
2022/05/06 Python