教你用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采用requests库模拟登录和抓取数据的简单示例
Jul 05 Python
python Django模板的使用方法
Jan 14 Python
利用python写个下载teahour音频的小脚本
May 08 Python
python 平衡二叉树实现代码示例
Jul 07 Python
python文件拆分与重组实例
Dec 10 Python
解决Python二维数组赋值问题
Nov 28 Python
Python实现汇率转换操作
May 03 Python
Python reques接口测试框架实现代码
Jul 28 Python
tensorflow与numpy的版本兼容性问题的解决
Jan 08 Python
Python .py生成.pyd文件并打包.exe 的注意事项说明
Mar 04 Python
python模拟浏览器 使用selenium进入好友QQ空间并留言
Apr 12 Python
python多次执行绘制条形图
Apr 20 Python
PyQt5实现多张图片显示并滚动
pyqt5蒙版遮罩mask,setmask的使用
详解Python描述符的工作原理
用Python爬取各大高校并可视化帮弟弟选大学,弟弟直呼牛X
用python修改excel表某一列内容的操作方法
Windows安装Anaconda3的方法及使用过程详解
Python Flask请求扩展与中间件相关知识总结
Jun 11 #Python
You might like
Yii2.0多文件上传实例说明
2017/07/24 PHP
PHP使用栈解决约瑟夫环问题算法示例
2017/08/27 PHP
javascript 有趣而诡异的数组
2009/04/06 Javascript
JavaScript字符串对象fromCharCode方法入门实例(用于把Unicode值转换为字符串)
2014/10/17 Javascript
jQuery中:image选择器用法实例
2015/01/03 Javascript
JavaScript监听文本框回车事件并过滤文本框空格的方法
2015/04/16 Javascript
JS使用正则表达式过滤多个词语并替换为相同长度星号的方法
2016/08/03 Javascript
深入理解jQuery layui分页控件的使用
2016/08/17 Javascript
探讨AngularJs中ui.route的简单应用
2016/11/16 Javascript
jQuery插件echarts实现的循环生成图效果示例【附demo源码下载】
2017/03/04 Javascript
vue数据双向绑定的注意点
2017/06/23 Javascript
JS实现留言板功能[楼层效果展示]
2017/12/27 Javascript
快速处理vue渲染前的显示问题
2018/03/05 Javascript
微信小程序实现的绘制table表格功能示例
2019/04/26 Javascript
Node对CommonJS的模块规范
2019/11/06 Javascript
jQuery实现数字华容道小游戏(实例代码)
2020/01/16 jQuery
vue element-ul实现展开和收起功能的实例代码
2020/11/25 Vue.js
浅析Python中return和finally共同挖的坑
2017/08/18 Python
教你用一行Python代码实现并行任务(附代码)
2018/02/02 Python
使用python爬虫获取黄金价格的核心代码
2018/06/13 Python
Python Pywavelet 小波阈值实例
2019/01/09 Python
浅析使用Python搭建http服务器
2019/10/27 Python
wxPython实现分隔窗口
2019/11/19 Python
jupyter notebook 多环境conda kernel配置方式
2020/04/10 Python
如何查看Django ORM执行的SQL语句的实现
2020/04/20 Python
浅谈python量化 双均线策略(金叉死叉)
2020/06/03 Python
html5 postMessage前端跨域并前端监听的方法示例
2018/11/01 HTML / CSS
linux面试题参考答案(1)
2016/01/22 面试题
汽车销售求职自荐信
2013/10/01 职场文书
外贸学院会计专业应届生求职信
2013/11/14 职场文书
红领巾广播站广播稿(3篇)
2014/09/20 职场文书
世界气象日活动总结
2015/02/27 职场文书
超市食品安全承诺书
2015/04/29 职场文书
服务行业标语口号
2015/12/26 职场文书
js实现模拟购物商城案例
2021/05/18 Javascript
SpringBoot实现quartz定时任务可视化管理功能
2021/08/30 Java/Android