教你用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中列表生成式的用法
Mar 31 Python
进一步了解Python中的XML 工具
Apr 13 Python
Python实现更改图片尺寸大小的方法(基于Pillow包)
Sep 19 Python
python中安装模块包版本冲突问题的解决
May 02 Python
python数据结构之链表的实例讲解
Jul 25 Python
详解 Python 读写XML文件的实例
Aug 02 Python
使用python编写udp协议的ping程序方法
Apr 22 Python
Django框架模板注入操作示例【变量传递到模板】
Dec 19 Python
Python3中列表list合并的四种方法
Apr 19 Python
40个你可能不知道的Python技巧附代码
Jan 29 Python
使用Dajngo 通过代码添加xadmin用户和权限(组)
Jul 03 Python
pycharm配置python 设置pip安装源为豆瓣源
Feb 05 Python
PyQt5实现多张图片显示并滚动
pyqt5蒙版遮罩mask,setmask的使用
详解Python描述符的工作原理
用Python爬取各大高校并可视化帮弟弟选大学,弟弟直呼牛X
用python修改excel表某一列内容的操作方法
Windows安装Anaconda3的方法及使用过程详解
Python Flask请求扩展与中间件相关知识总结
Jun 11 #Python
You might like
PHP 配置open_basedir 让各虚拟站点独立运行
2009/11/12 PHP
网站防止被刷票的一些思路与方法
2015/01/08 PHP
php 利用socket发送GET,POST请求的实例代码
2020/07/04 PHP
jquery提示 "object expected"的解决方法
2009/12/13 Javascript
CSS鼠标响应事件经过、移动、点击示例介绍
2013/09/04 Javascript
js数组的基本用法及数组根据下标(数值或字符)移除元素
2013/10/20 Javascript
Document:getElementsByName()使用方法及示例
2013/10/28 Javascript
项目实践一图片上传之form表单还是base64前端图片压缩(前端图片压缩)
2016/07/28 Javascript
JS打印组合功能
2016/08/04 Javascript
Node.js实现兼容IE789的文件上传进度条
2016/09/02 Javascript
图解Javascript——作用域、作用域链、闭包
2017/03/21 Javascript
Angularjs中的$apply及优化使用详解
2018/07/02 Javascript
angular4自定义表单控件[(ngModel)]的实现
2018/11/23 Javascript
微信小程序页面滚动到指定位置代码实例
2019/09/07 Javascript
[03:06]V社市场总监Dota2项目负责人Erik专访:希望更多中国玩家加入DOTA2
2014/07/11 DOTA
python 远程统计文件代码分享
2015/05/14 Python
Python的净值数据接口调用示例分享
2016/03/15 Python
Python实现简单过滤文本段的方法
2017/05/24 Python
Python3.4实现远程控制电脑开关机
2018/02/22 Python
python 对字典按照value进行排序的方法
2019/05/09 Python
详解python函数的闭包问题(内部函数与外部函数详述)
2019/05/17 Python
Python内置函数及功能简介汇总
2020/10/13 Python
Python结合百度语音识别实现实时翻译软件的实现
2021/01/18 Python
StubHub巴西:购买和出售您的门票
2016/07/22 全球购物
优秀毕业大学生推荐信
2013/11/13 职场文书
售后主管岗位职责
2013/12/08 职场文书
大学生职业生涯规划书前言
2014/01/09 职场文书
18岁生日感言
2014/01/12 职场文书
本科毕业生专业自荐书范文
2014/02/05 职场文书
小学国庆节活动方案策划书
2014/09/16 职场文书
无刑事犯罪记录证明范本
2014/09/29 职场文书
银行党员批评与自我批评
2014/10/15 职场文书
初二学生评语大全
2014/12/26 职场文书
Python排序算法之插入排序及其优化方案详解
2021/06/11 Python
详解Python类和对象内容
2021/06/22 Python
使用pandas生成/读取csv文件的方法实例
2021/07/09 Python