教你用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 random模块(获取随机数)常用方法和使用例子
May 13 Python
在Apache服务器上同时运行多个Django程序的方法
Jul 22 Python
新手如何快速入门Python(菜鸟必看篇)
Jun 10 Python
python的re正则表达式实例代码
Jan 24 Python
TensorFlow实现MLP多层感知机模型
Mar 09 Python
python爬虫的数据库连接问题【推荐】
Jun 25 Python
解决tensorflow1.x版本加载saver.restore目录报错的问题
Jul 26 Python
Python实现钉钉发送报警消息的方法
Feb 20 Python
python nmap实现端口扫描器教程
May 28 Python
Python如何使用ConfigParser读取配置文件
Nov 12 Python
python实现大文本文件分割成多个小文件
Apr 20 Python
如何利用Python实现一个论文降重工具
Jul 09 Python
PyQt5实现多张图片显示并滚动
pyqt5蒙版遮罩mask,setmask的使用
详解Python描述符的工作原理
用Python爬取各大高校并可视化帮弟弟选大学,弟弟直呼牛X
用python修改excel表某一列内容的操作方法
Windows安装Anaconda3的方法及使用过程详解
Python Flask请求扩展与中间件相关知识总结
Jun 11 #Python
You might like
PHP 定界符 使用技巧
2009/06/14 PHP
ThinkPHP学习笔记(一)ThinkPHP部署
2014/06/22 PHP
PHP的mysqli_thread_id()函数讲解
2019/01/24 PHP
javascript中删除指定数组中指定的元素的代码
2011/02/12 Javascript
js类型转换与引用类型详解(Boolean_Number_String)
2014/03/07 Javascript
Nodejs实战心得之eventproxy模块控制并发
2015/10/27 NodeJs
实例讲解jQuery中对事件的命名空间的运用
2016/05/24 Javascript
自己动手制作基于jQuery的Web页面加载进度条插件
2016/06/03 Javascript
vue 打包后的文件部署到express服务器上的方法
2017/08/09 Javascript
浅谈Vue响应式(数组变异方法)
2018/05/07 Javascript
layui table 参数设置方法
2018/08/14 Javascript
jQuery实现模拟搜索引擎的智能提示功能简单示例
2019/01/27 jQuery
Vue项目中如何使用Axios封装http请求详解
2019/10/23 Javascript
vue-next/runtime-core 源码阅读指南详解
2019/10/25 Javascript
解决vue自定义全局消息框组件问题
2019/11/22 Javascript
[03:17]2014DOTA2 国际邀请赛中国区预选赛 四强专访
2014/05/23 DOTA
python实现telnet客户端的方法
2015/04/15 Python
Python中的if、else、elif语句用法简明讲解
2016/03/11 Python
python 请求服务器的实现代码(http请求和https请求)
2018/05/25 Python
python scp 批量同步文件的实现方法
2019/01/03 Python
pycharm创建一个python包方法图解
2019/04/10 Python
PyCharm 创建指定版本的 Django(超详图解教程)
2019/06/18 Python
HTML5 FormData 方法介绍以及实现文件上传示例
2017/09/12 HTML / CSS
英国航空官网:British Airways
2016/09/11 全球购物
高品质和独特的产品世界:Creations and Collections
2018/01/07 全球购物
Spartoo瑞典:鞋子、包包和衣服
2018/09/15 全球购物
PHP笔试题
2012/02/22 面试题
Internet主要有哪些网络群组成
2015/12/24 面试题
5个HTML5的常用本地存储方式详解与介绍
2021/03/27 HTML / CSS
艺术学院毕业生自我评价
2014/03/02 职场文书
信息总监管理职责范本
2014/03/08 职场文书
学校教研活动总结
2014/07/02 职场文书
毕业论文答辩开场白和结束语
2015/05/27 职场文书
python制作图形界面的2048游戏, 基于tkinter
2021/04/06 Python
Java并发编程之Executor接口的使用
2021/06/21 Java/Android
win10频率超出范围怎么办?win10老显示超出工作频率范围的解决方法
2022/07/07 数码科技