教你用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创建只读属性对象的方法(ReadOnlyObject)
Feb 10 Python
pandas DataFrame实现几列数据合并成为新的一列方法
Jun 08 Python
python实现嵌套列表平铺的两种方法
Nov 08 Python
python中的&&及||的实现示例
Aug 07 Python
解决Django中修改js css文件但浏览器无法及时与之改变的问题
Aug 31 Python
python生成器用法实例详解
Nov 22 Python
Pycharm 2020最新永久激活码(附最新激活码和插件)
Sep 17 Python
python encrypt 实现AES加密的实例详解
Feb 20 Python
Python 多线程C段扫描、检测 Ping扫描脚本的实现
Sep 03 Python
python 用opencv实现霍夫线变换
Nov 27 Python
python3中celery异步框架简单使用+守护进程方式启动
Jan 20 Python
PyQt5实现多张图片显示并滚动
pyqt5蒙版遮罩mask,setmask的使用
详解Python描述符的工作原理
用Python爬取各大高校并可视化帮弟弟选大学,弟弟直呼牛X
用python修改excel表某一列内容的操作方法
Windows安装Anaconda3的方法及使用过程详解
Python Flask请求扩展与中间件相关知识总结
Jun 11 #Python
You might like
php数组总结篇(一)
2008/09/30 PHP
PHP新手入门学习方法
2011/05/08 PHP
ThinkPHP静态缓存简单配置和使用方法详解
2016/03/23 PHP
Joomla简单判断用户是否登录的方法
2016/05/04 PHP
ZendFramework框架实现连接两个或多个数据库的方法
2016/12/08 PHP
深入解析contentWindow, contentDocument
2013/07/04 Javascript
纯javascript制作日历控件
2015/07/17 Javascript
Bootstrapvalidator校验、校验清除重置的实现代码(推荐)
2016/09/28 Javascript
详解用webpack把我们的业务模块分开打包的方法
2017/07/20 Javascript
Vue侧滑菜单组件——DrawerLayout
2017/12/18 Javascript
Vue.js构建你的第一个包并在NPM上发布的方法步骤
2019/05/01 Javascript
jQuery表单选择器用法详解
2019/08/22 jQuery
微信小程序实现带放大效果的轮播图
2020/05/26 Javascript
解决Mint-ui 框架Popup和Datetime Picker组件滚动穿透的问题
2020/11/04 Javascript
[44:15]DOTA2上海特级锦标赛主赛事日 - 5 败者组决赛Liquid VS EG第二局
2016/03/06 DOTA
Python编程中的文件操作攻略
2015/10/16 Python
使用py2exe在Windows下将Python程序转为exe文件
2016/03/04 Python
python3实现ftp服务功能(客户端)
2017/03/24 Python
一道python走迷宫算法题
2018/01/22 Python
python利用thrift服务读取hbase数据的方法
2018/12/27 Python
Python高级特性与几种函数的讲解
2019/03/08 Python
Python爬虫实现“盗取”微信好友信息的方法分析
2019/09/16 Python
Python3如何在Windows和Linux上打包
2020/02/25 Python
python爬虫多次请求超时的几种重试方法(6种)
2020/12/01 Python
Python爬虫自动化获取华图和粉笔网站的错题(推荐)
2021/01/08 Python
使用HTML和CSS实现的标签云效果(附demo)
2021/02/03 HTML / CSS
打印机墨盒:123Inkjets
2017/02/16 全球购物
奥林匹亚体育:Olympia Sports
2020/12/30 全球购物
爱祖国演讲稿
2014/05/04 职场文书
2016新年年会主持词
2015/07/06 职场文书
重阳节主题班会
2015/08/17 职场文书
2016学习全国教书育人楷模先进事迹心得体会
2016/01/21 职场文书
银行求职信怎么写
2019/06/20 职场文书
python实现MD5进行文件去重的示例代码
2021/07/09 Python
分享MySQL常用 内核 Debug 几种常见方法
2022/03/17 MySQL
Redis Lua脚本实现ip限流示例
2022/07/15 Redis