教你用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的subprocess模块总结
Nov 07 Python
python开发之list操作实例分析
Feb 22 Python
python如何为被装饰的函数保留元数据
Mar 21 Python
Python实现查询某个目录下修改时间最新的文件示例
Aug 29 Python
Python any()函数的使用方法
Oct 28 Python
python 二维矩阵转三维矩阵示例
Nov 30 Python
pytorch如何冻结某层参数的实现
Jan 10 Python
Python基于Tensor FLow的图像处理操作详解
Jan 15 Python
python闭包与引用以及需要注意的陷阱
Sep 18 Python
如何基于Python按行合并两个txt
Nov 03 Python
用Python制作灯光秀短视频的思路详解
Apr 13 Python
PyTorch device与cuda.device用法
Apr 03 Python
PyQt5实现多张图片显示并滚动
pyqt5蒙版遮罩mask,setmask的使用
详解Python描述符的工作原理
用Python爬取各大高校并可视化帮弟弟选大学,弟弟直呼牛X
用python修改excel表某一列内容的操作方法
Windows安装Anaconda3的方法及使用过程详解
Python Flask请求扩展与中间件相关知识总结
Jun 11 #Python
You might like
PHP7.0版本备注
2015/07/23 PHP
Laravel中间件实现原理详解
2016/10/09 PHP
PHP函数rtrim()使用中的怪异现象分析
2017/02/24 PHP
PHP实现Unicode编码相互转换的方法示例
2020/11/17 PHP
ThinkPHP框架整合微信支付之JSAPI模式图文详解
2019/04/09 PHP
PHP使用 Pear 进行安装和卸载包的方法详解
2019/07/08 PHP
用JavaScript获取网页中的js、css、Flash等文件
2006/12/20 Javascript
input的focus方法使用
2010/03/13 Javascript
JavaScript中继承的一些示例方法与属性参考
2010/08/07 Javascript
JS 操作符整理[推荐收藏]
2011/11/15 Javascript
jsp js鼠标移动到指定区域显示选项卡离开时隐藏示例
2013/06/14 Javascript
AngularJS模块管理问题的非常规处理方法
2015/04/29 Javascript
如何使用AngularJs打造权限管理系统【简易型】
2016/05/09 Javascript
jQuery中each()、find()和filter()等节点操作方法详解(推荐)
2016/05/25 Javascript
Nodejs中解决cluster模块的多进程如何共享数据问题
2016/11/10 NodeJs
jQuery完成表单验证的实例代码(纯代码)
2017/09/30 jQuery
React router动态加载组件之适配器模式的应用详解
2018/09/12 Javascript
微信小程序onLaunch异步,首页onLoad先执行?
2018/09/20 Javascript
Vue中的methods、watch、computed的区别
2018/11/26 Javascript
JQuery样式操作、click事件以及索引值-选项卡应用示例
2019/05/14 jQuery
实现高性能javascript的注意事项
2019/05/27 Javascript
python以环状形式组合排列图片并输出的方法
2015/03/17 Python
python创建列表并给列表赋初始值的方法
2015/07/28 Python
利用Python抓取行政区划码的方法
2016/11/28 Python
Python读取和处理文件后缀为.sqlite的数据文件(实例讲解)
2017/06/27 Python
Python_LDA实现方法详解
2017/10/25 Python
python根据完整路径获得盘名/路径名/文件名/文件扩展名的方法
2020/04/22 Python
基于FME使用Python过程图解
2020/05/13 Python
keras使用Sequence类调用大规模数据集进行训练的实现
2020/06/22 Python
python3.7调试的实例方法
2020/07/21 Python
Python使用pyenv实现多环境管理
2021/02/05 Python
家长通知书教师评语
2014/04/17 职场文书
求职信模板
2014/05/23 职场文书
公司承诺书怎么写
2014/05/24 职场文书
结婚典礼致辞
2015/07/28 职场文书
餐厅服务员管理制度
2015/08/05 职场文书