教你用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使用xauth方式登录饭否网然后发消息
Apr 11 Python
老生常谈Python基础之字符编码
Jun 14 Python
python实现txt文件格式转换为arff格式
May 31 Python
Python3正则匹配re.split,re.finditer及re.findall函数用法详解
Jun 11 Python
Python神奇的内置函数locals的实例讲解
Feb 22 Python
python游戏开发之视频转彩色字符动画
Apr 26 Python
Python Selenium 之数据驱动测试的实现
Aug 01 Python
Django框架 信号调度原理解析
Sep 04 Python
Python3 shutil(高级文件操作模块)实例用法总结
Feb 19 Python
python+openCV对视频进行截取的实现
Nov 27 Python
python 自动识别并连接串口的实现
Jan 19 Python
Python爬虫中urllib3与urllib的区别是什么
Jul 21 Python
PyQt5实现多张图片显示并滚动
pyqt5蒙版遮罩mask,setmask的使用
详解Python描述符的工作原理
用Python爬取各大高校并可视化帮弟弟选大学,弟弟直呼牛X
用python修改excel表某一列内容的操作方法
Windows安装Anaconda3的方法及使用过程详解
Python Flask请求扩展与中间件相关知识总结
Jun 11 #Python
You might like
php中使用Curl、socket、file_get_contents三种方法POST提交数据
2011/08/12 PHP
PHP获取搜索引擎关键字来源的函数(支持百度和谷歌等搜索引擎)
2012/10/03 PHP
PHP生成等比缩略图类和自定义函数分享
2014/06/25 PHP
基于jquery的无限级联下拉框js插件
2011/10/29 Javascript
window.open 以post方式传递参数示例代码
2014/02/27 Javascript
Blocksit插件实现瀑布流数据无限( 异步)加载
2014/06/20 Javascript
JavaScript字符串对象substring方法入门实例(用于截取字符串)
2014/10/17 Javascript
JQuery查找DOM节点的方法
2015/06/11 Javascript
Vue.js开发环境搭建
2016/11/10 Javascript
实例分析浏览器中“JavaScript解析器”的工作原理
2016/12/12 Javascript
jQuery实现表格元素动态创建功能
2017/01/09 Javascript
vue-cli配置flexible过程详解
2019/07/04 Javascript
Node.js从字符串生成文件流的实现方法
2019/08/18 Javascript
nodejs和react实现即时通讯简易聊天室功能
2019/08/21 NodeJs
详解Python2.x中对Unicode编码的使用
2015/04/03 Python
PyMongo安装使用笔记
2015/04/27 Python
python实现从网络下载文件并获得文件大小及类型的方法
2015/04/28 Python
python中多个装饰器的执行顺序详解
2018/10/08 Python
Python读取txt某几列绘图的方法
2018/10/14 Python
对python插入数据库和生成插入sql的示例讲解
2018/11/14 Python
PyQt5组件读取参数的实例
2019/06/25 Python
浅析Python 中几种字符串格式化方法及其比较
2019/07/02 Python
浅谈Python里面None True False之间的区别
2020/07/09 Python
纽约通行卡:The New York Pass(免费游览纽约90多个景点)
2017/07/29 全球购物
Perfume’s Club法国站:购买香水和化妆品
2019/05/02 全球购物
Fenty Beauty官网:蕾哈娜创立的美妆品牌
2021/01/07 全球购物
美国相机和电子产品零售商:Beach Camera
2020/11/26 全球购物
GWT都有什么特性
2016/12/02 面试题
写好自荐信的几个要点
2013/12/26 职场文书
简历的自我评价
2014/02/03 职场文书
机械设计及其自动化求职推荐信
2014/02/17 职场文书
《晚上的太阳》教学反思
2014/04/23 职场文书
学校志愿者活动总结
2014/06/27 职场文书
2014年干部作风建设总结
2014/10/23 职场文书
金融专业银行实习证明模板
2014/11/28 职场文书
《世界多美呀》教学反思
2016/02/22 职场文书