教你用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中assert用法实例分析
Apr 30 Python
Python自动调用IE打开某个网站的方法
Jun 03 Python
Python实现递归遍历文件夹并删除文件
Apr 18 Python
python中使用正则表达式的连接符示例代码
Oct 10 Python
python基于ID3思想的决策树
Jan 03 Python
pygame实现俄罗斯方块游戏
Jun 26 Python
如何安装多版本python python2和python3共存以及pip共存
Sep 18 Python
利用python提取wav文件的mfcc方法
Jan 09 Python
Python项目 基于Scapy实现SYN泛洪攻击的方法
Jul 23 Python
详解如何从TensorFlow的mnist数据集导出手写体数字图片
Aug 05 Python
一篇文章搞定Python操作文件与目录
Aug 13 Python
Python threading.local代码实例及原理解析
Mar 16 Python
PyQt5实现多张图片显示并滚动
pyqt5蒙版遮罩mask,setmask的使用
详解Python描述符的工作原理
用Python爬取各大高校并可视化帮弟弟选大学,弟弟直呼牛X
用python修改excel表某一列内容的操作方法
Windows安装Anaconda3的方法及使用过程详解
Python Flask请求扩展与中间件相关知识总结
Jun 11 #Python
You might like
PHP源码之 ext/mysql扩展部分
2009/07/17 PHP
YII实现分页的方法
2014/07/09 PHP
JQuery Tips相关(1)----关于$.Ready()
2014/08/14 Javascript
JavaScript常用小技巧小结
2014/12/29 Javascript
JS+CSS实现Div弹出窗口同时背景变暗的方法
2015/03/04 Javascript
JavaScript学习笔记(三):JavaScript也有入口Main函数
2015/09/12 Javascript
使用Object.defineProperty实现简单的js双向绑定
2016/04/15 Javascript
AngularJS使用ng-inlude指令加载页面失败的原因与解决方法
2017/01/19 Javascript
JS实现侧边栏鼠标经过弹出框+缓冲效果
2017/03/29 Javascript
详解微信小程序Radio选中样式切换
2017/07/06 Javascript
Nodejs Express 通过log4js写日志到Logstash(ELK)
2018/08/30 NodeJs
微信小程序第三方框架对比 之 wepy / mpvue / taro
2019/04/10 Javascript
node.js基于socket.io快速实现一个实时通讯应用
2019/04/23 Javascript
jQuery与原生JavaScript选择HTML元素集合用法对比分析
2019/11/26 jQuery
nuxt 路由、过渡特效、中间件的实现代码
2020/11/06 Javascript
Python3基础之基本数据类型概述
2014/08/13 Python
python Django批量导入不重复数据
2016/03/25 Python
Python实现新浪博客备份的方法
2016/04/27 Python
python数据处理实战(必看篇)
2017/06/11 Python
python 对dataframe下面的值进行大规模赋值方法
2018/06/09 Python
使用 Python 实现微信群友统计器的思路详解
2018/09/26 Python
使用Python进行目录的对比方法
2018/11/01 Python
Python设计模式之模板方法模式实例详解
2019/01/17 Python
python批量爬取下载抖音视频
2019/06/17 Python
Python实现图像去噪方式(中值去噪和均值去噪)
2019/12/18 Python
python实现堆排序的实例讲解
2020/02/21 Python
matplotlib常见函数之plt.rcParams、matshow的使用(坐标轴设置)
2021/01/05 Python
CSS3+js实现简单的时钟特效
2015/03/18 HTML / CSS
沙特阿拉伯家用电器和电子产品购物网站:Sheta and Saif
2020/04/03 全球购物
char型变量中能不能存贮一个中文汉字
2015/07/08 面试题
留学推荐信范文
2014/05/10 职场文书
机关党员进社区活动总结
2014/07/05 职场文书
春晚观后感
2015/06/11 职场文书
八年级作文之友谊
2019/12/02 职场文书
div与span之间的区别与使用介绍
2021/12/06 HTML / CSS
使用Django框架创建项目
2022/06/10 Python