教你用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垃圾回收机制
Feb 12 Python
Python数据类型详解(三)元祖:tuple
May 08 Python
Python实现简单的获取图片爬虫功能示例
Jul 12 Python
wx.CheckBox创建复选框控件并响应鼠标点击事件
Apr 25 Python
Python pycharm 同时加载多个项目的方法
Jan 17 Python
python里 super类的工作原理详解
Jun 19 Python
python频繁写入文件时提速的方法
Jun 26 Python
Python实现简单的列表冒泡排序和反转列表操作示例
Jul 10 Python
Tensorflow限制CPU个数实例
Feb 06 Python
opencv之颜色过滤只留下图片中的红色区域操作
Jun 05 Python
详解如何在pyqt中通过OpenCV实现对窗口的透视变换
Sep 20 Python
几款好用的python工具库(小结)
Oct 20 Python
PyQt5实现多张图片显示并滚动
pyqt5蒙版遮罩mask,setmask的使用
详解Python描述符的工作原理
用Python爬取各大高校并可视化帮弟弟选大学,弟弟直呼牛X
用python修改excel表某一列内容的操作方法
Windows安装Anaconda3的方法及使用过程详解
Python Flask请求扩展与中间件相关知识总结
Jun 11 #Python
You might like
哪吒敖丙传:新人物二哥敖乙出场 小敖丙奶气十足
2020/03/08 国漫
PHP 自定义错误处理函数的使用详解
2013/05/10 PHP
PHP图片上传代码
2013/11/04 PHP
javascript下对于事件、事件流、事件触发的顺序随便说说
2010/07/17 Javascript
地址栏传递中文参数乱码在js里用escape转码
2013/08/28 Javascript
用js格式化金额可设置保留的小数位数
2014/05/09 Javascript
浅谈javascript中自定义模版
2015/01/29 Javascript
js使用post 方式打开新窗口
2015/02/26 Javascript
Nodejs进阶:express+session实现简易登录身份认证
2017/04/24 NodeJs
JS中mouseup事件丢失的原因与解决办法
2017/06/14 Javascript
手机注册发送验证码倒计时的简单实例
2017/11/15 Javascript
Angular实现双向折叠列表组件的示例代码
2017/11/21 Javascript
微信小程序使用audio组件播放音乐功能示例【附源码下载】
2017/12/08 Javascript
4个顶级JavaScript高级文本编辑器
2018/10/10 Javascript
vue实现购物车抛物线小球动画效果的方法详解
2019/02/13 Javascript
vue 源码解析之虚拟Dom-render
2019/08/26 Javascript
[02:16]DOTA2超级联赛专访Burning 逆袭需要抓住机会
2013/06/24 DOTA
Python中MYSQLdb出现乱码的解决方法
2014/10/11 Python
pygame播放音乐的方法
2015/05/19 Python
django之跨表查询及添加记录的示例代码
2018/10/16 Python
python对html过滤处理的方法
2018/10/21 Python
pycharm开发一个简单界面和通用mvc模板(操作方法图解)
2020/05/27 Python
利用Python函数实现一个万历表完整示例
2021/01/23 Python
Joules美国官网:出色的英国风格
2017/10/30 全球购物
能否解释一下XSS cookie盗窃是什么意思
2012/06/02 面试题
建筑工程实习自我鉴定
2013/09/19 职场文书
实习生自我鉴定范文
2013/12/05 职场文书
《桃花心木》教学反思
2014/02/17 职场文书
大型营销活动计划书
2014/04/28 职场文书
2015元旦文艺汇演主持稿(开场白+结束语)
2014/12/14 职场文书
家长高考寄语
2015/02/27 职场文书
新员工试用期自我评价
2015/03/10 职场文书
2015年三年级班主任工作总结
2015/05/21 职场文书
大学军训通讯稿
2015/07/18 职场文书
创业计划书之情侣餐厅
2019/09/29 职场文书
python多次执行绘制条形图
2022/04/20 Python