教你用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自动化测试之连接几组测试包实例
Sep 28 Python
Python3实现从指定路径查找文件的方法
May 22 Python
Python实现PS滤镜特效之扇形变换效果示例
Jan 26 Python
python绘制多个子图的实例
Jul 07 Python
python  文件的基本操作 菜中菜功能的实例代码
Jul 17 Python
浅析PyTorch中nn.Module的使用
Aug 18 Python
简单了解python中的与或非运算
Sep 18 Python
python使用rsa非对称加密过程解析
Dec 28 Python
Selenium常见异常解析及解决方案示范
Apr 10 Python
Python3 socket即时通讯脚本实现代码实例(threading多线程)
Jun 01 Python
python实现语音常用度量方法的代码详解
May 25 Python
详解Python flask的前后端交互
Mar 31 Python
PyQt5实现多张图片显示并滚动
pyqt5蒙版遮罩mask,setmask的使用
详解Python描述符的工作原理
用Python爬取各大高校并可视化帮弟弟选大学,弟弟直呼牛X
用python修改excel表某一列内容的操作方法
Windows安装Anaconda3的方法及使用过程详解
Python Flask请求扩展与中间件相关知识总结
Jun 11 #Python
You might like
thinkphp文件引用与分支结构用法实例
2014/11/26 PHP
PHP正则判断一个变量是否为正整数的方法
2019/02/27 PHP
Centos7安装swoole扩展操作示例
2020/03/26 PHP
jQuery入门第一课 jQuery选择符
2010/03/14 Javascript
jquery常用技巧及常用方法列表集合
2011/04/06 Javascript
基于jquery的固定表头和列头的代码
2012/05/03 Javascript
js实现幻灯片播放图片示例代码
2013/11/07 Javascript
JS判断非空至少输入两个字符的简单实现方法
2017/06/23 Javascript
解决IE7中使用jQuery动态操作name问题
2017/08/28 jQuery
微信小程序loading组件显示载入动画用法示例【附源码下载】
2017/12/09 Javascript
js点击时关闭该范围下拉菜单之外的菜单方法
2018/01/11 Javascript
JQuery Ajax动态加载Table数据的实例讲解
2018/08/09 jQuery
如何在基于vue-cli的项目自定义打包环境
2018/11/10 Javascript
AngularJs中$cookies简单用法分析
2019/05/30 Javascript
Angular8路由守卫原理和使用方法
2019/08/29 Javascript
javascript数组元素删除方法delete和splice解析
2019/12/09 Javascript
[04:23]DOTA2上海特锦赛小组赛第一日 TOP10精彩集锦
2016/02/27 DOTA
Python ORM框架SQLAlchemy学习笔记之数据添加和事务回滚介绍
2014/06/10 Python
Python多线程结合队列下载百度音乐的方法
2015/07/27 Python
Python优化技巧之利用ctypes提高执行速度
2016/09/11 Python
Python趣味实例,实现一个简单的抽奖刮刮卡
2020/07/18 Python
HTML5的文档结构和新增标签完全解析
2017/04/21 HTML / CSS
AmazeUI 平滑滚动效果的示例代码
2020/08/20 HTML / CSS
Booking.com美国:全球酒店预订网站
2017/04/18 全球购物
英国最大的纸工艺品商店:CraftStash
2018/12/01 全球购物
有趣、实用和鼓舞人心的产品:Inspire Uplift
2019/11/05 全球购物
开放系统互连参考模型
2016/06/29 面试题
shell程序如何生命变量?shell变量是弱变量吗?
2014/11/10 面试题
演讲稿怎么写才完美
2014/01/02 职场文书
党的群众路线教育实践活动宣传方案
2014/02/23 职场文书
保密协议书范本
2014/04/22 职场文书
社区维稳工作方案
2014/06/06 职场文书
好听的队名和口号
2014/06/09 职场文书
金融与证券专业求职信
2014/06/22 职场文书
出纳2015年度工作总结范文
2015/10/14 职场文书
python用tkinter开发的扫雷游戏
2021/06/01 Python