教你用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制作简易注册登录系统
Dec 15 Python
关于Python中空格字符串处理的技巧总结
Aug 10 Python
python3连接MySQL数据库实例详解
May 24 Python
对Python 除法负数取商的取整方式详解
Dec 12 Python
python命令行参数用法实例分析
Jun 25 Python
Python线上环境使用日志的及配置文件
Jul 28 Python
python实现登录密码重置简易操作代码
Aug 14 Python
解决pycharm上的jupyter notebook端口被占用问题
Dec 17 Python
将python包发布到PyPI和制作whl文件方式
Dec 25 Python
python如何实现复制目录到指定目录
Feb 13 Python
matplotlib.pyplot.matshow 矩阵可视化实例
Jun 16 Python
Python使用requests模块爬取百度翻译
Aug 25 Python
PyQt5实现多张图片显示并滚动
pyqt5蒙版遮罩mask,setmask的使用
详解Python描述符的工作原理
用Python爬取各大高校并可视化帮弟弟选大学,弟弟直呼牛X
用python修改excel表某一列内容的操作方法
Windows安装Anaconda3的方法及使用过程详解
Python Flask请求扩展与中间件相关知识总结
Jun 11 #Python
You might like
优化php效率,提高php性能的一些方法
2011/03/24 PHP
基于php伪静态的实现详细介绍
2013/04/28 PHP
探讨php中遍历二维数组的几种方法详解
2013/06/08 PHP
php正则修正符用法实例详解
2016/12/29 PHP
我也种棵OO树JXTree[js+css+xml]
2007/04/02 Javascript
讲两件事:1.this指针的用法小探. 2.ie的attachEvent和firefox的addEventListener在事件处理上的区别
2007/04/12 Javascript
JS 页面自动加载函数(兼容多浏览器)
2009/05/18 Javascript
菜鸟javascript基础资料整理2
2010/12/06 Javascript
js设置组合快捷键/tabindex功能的方法
2013/11/21 Javascript
jquery实现弹出div,始终显示在屏幕正中间的简单实例
2014/03/08 Javascript
JavaScript利用append添加元素报错的解决方法
2014/07/01 Javascript
JavaScript实现网站访问次数统计代码
2015/08/12 Javascript
AngularJS中$apply方法和$watch方法用法总结
2016/12/13 Javascript
用jQuery实现可输入多选下拉组合框实例代码
2017/01/18 Javascript
jQuery实现字体颜色渐变效果的方法
2017/03/29 jQuery
JS中LocalStorage与SessionStorage五种循序渐进的使用方法
2017/07/12 Javascript
angular4模块中给标签添加背景图的实现方法
2017/09/15 Javascript
JavaScript for循环 if判断语句(学习笔记)
2017/10/11 Javascript
nodejs实现用户登录路由功能
2019/05/22 NodeJs
Javascript中的this,bind和that使用实例
2019/12/05 Javascript
[04:40]2016个国际邀请赛中国区预选赛场地——华西村观战指南
2016/06/25 DOTA
Python实现简单状态框架的方法
2015/03/19 Python
python实现指定字符串补全空格的方法
2015/04/30 Python
python搭建微信公众平台
2016/02/09 Python
Python3 处理JSON的实例详解
2017/10/29 Python
python基于itchat模块实现微信防撤回
2019/04/29 Python
python global关键字的用法详解
2019/09/05 Python
python orm 框架中sqlalchemy用法实例详解
2020/02/02 Python
python如何写出表白程序
2020/06/01 Python
Python 绘制可视化折线图
2020/07/22 Python
软件测试题目
2013/02/27 面试题
计算机专业应届毕业生自荐信
2013/09/26 职场文书
出纳员岗位职责风险
2014/03/06 职场文书
解除劳动合同协议书范本2014
2014/09/25 职场文书
婚庆答谢词大全
2015/09/29 职场文书
浅谈Python中的函数(def)及参数传递操作
2021/05/25 Python