教你用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通过wxPython打开一个音频文件并播放的方法
Mar 25 Python
Python实现的数据结构与算法之双端队列详解
Apr 22 Python
python中模块的__all__属性详解
Oct 26 Python
微信跳一跳python辅助脚本(总结)
Jan 11 Python
Python 实现选择排序的算法步骤
Apr 22 Python
Python实现的基于优先等级分配糖果问题算法示例
Apr 25 Python
Python使用pyautogui模块实现自动化鼠标和键盘操作示例
Sep 04 Python
python生成九宫格图片
Nov 19 Python
Python小白必备的8个最常用的内置函数(推荐)
Apr 03 Python
分析运行中的 Python 进程详细解析
Jun 22 Python
详解python实现数据归一化处理的方式:(0,1)标准化
Jul 17 Python
Python如何实现的二分查找算法
May 27 Python
PyQt5实现多张图片显示并滚动
pyqt5蒙版遮罩mask,setmask的使用
详解Python描述符的工作原理
用Python爬取各大高校并可视化帮弟弟选大学,弟弟直呼牛X
用python修改excel表某一列内容的操作方法
Windows安装Anaconda3的方法及使用过程详解
Python Flask请求扩展与中间件相关知识总结
Jun 11 #Python
You might like
PHP常用代码
2006/11/23 PHP
用PHP程序实现支持页面后退的两种方法
2008/06/30 PHP
PHP 在5.1.* 和5.2.*之间 PDO数据库操作中的不同之处小结
2012/03/07 PHP
PHP开发Apache服务器配置
2015/07/15 PHP
PHP学习笔记之php文件操作
2016/06/03 PHP
javascript一些实用技巧小结
2011/03/18 Javascript
Uglifyjs(JS代码优化工具)入门 安装使用
2020/04/13 Javascript
使用ImageMagick进行图片缩放、合成与裁剪(js+python)
2013/09/16 Javascript
用jquery等比例控制图片宽高的具体实现
2014/01/28 Javascript
jQuery on方法传递参数示例
2014/12/09 Javascript
浅析如何利用JavaScript进行语音识别
2016/10/27 Javascript
微信小程序实战之上拉(分页加载)效果(2)
2017/04/17 Javascript
jQuery鼠标移动图片上实现放大效果
2017/06/25 jQuery
详解基于vue-cli配置移动端自适应
2018/01/13 Javascript
vue2.0 使用element-ui里的upload组件实现图片预览效果方法
2018/09/04 Javascript
vue头部导航动态点击处理方法
2018/11/02 Javascript
Jquery 动态添加元素并添加点击事件实现过程解析
2019/10/12 jQuery
JS如何实现封装列表右滑动删除收藏按钮
2020/07/23 Javascript
JavaScript实现下拉列表
2021/01/20 Javascript
python中实现数组和列表读取一列的方法
2018/04/03 Python
python3实现磁盘空间监控
2018/06/21 Python
Win10系统下安装labelme及json文件批量转化方法
2019/07/30 Python
Python爬取365好书中小说代码实例
2020/02/28 Python
canvas小画板之平滑曲线的实现
2020/08/12 HTML / CSS
Nike英国官网:Nike.com (UK)
2017/02/13 全球购物
全球性的女装店:storets
2019/06/12 全球购物
BSTN意大利:德国街头和运动文化高品质商店
2020/12/22 全球购物
介绍一下sql server的安全性
2014/08/10 面试题
杭州-DOTNET笔试题集
2013/09/25 面试题
点菜员岗位职责范本
2014/02/14 职场文书
学校感恩教育活动总结
2014/07/07 职场文书
高中教师先进事迹材料
2014/08/22 职场文书
2014党员民主评议个人总结
2014/09/10 职场文书
公司离职证明标准格式
2014/11/18 职场文书
社区低保工作总结2015
2015/07/23 职场文书
100句拼搏进取的名言警句,值得一读!
2019/10/07 职场文书