教你用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 相关文章推荐
在Django的上下文中设置变量的方法
Jul 20 Python
简介Django中内置的一些中间件
Jul 24 Python
Python 实现 贪吃蛇大作战 代码分享
Sep 07 Python
利用python打印出菱形、三角形以及矩形的方法实例
Aug 08 Python
Python实现的密码强度检测器示例
Aug 23 Python
python版简单工厂模式
Oct 16 Python
python制作简单五子棋游戏
Jun 18 Python
python创建n行m列数组示例
Dec 02 Python
python 使用建议与技巧分享(四)
Aug 18 Python
python中字符串的编码与解码详析
Dec 03 Python
MoviePy常用剪辑类及Python视频剪辑自动化
Dec 18 Python
python制作图形界面的2048游戏, 基于tkinter
Apr 06 Python
PyQt5实现多张图片显示并滚动
pyqt5蒙版遮罩mask,setmask的使用
详解Python描述符的工作原理
用Python爬取各大高校并可视化帮弟弟选大学,弟弟直呼牛X
用python修改excel表某一列内容的操作方法
Windows安装Anaconda3的方法及使用过程详解
Python Flask请求扩展与中间件相关知识总结
Jun 11 #Python
You might like
第十三节--对象串行化
2006/11/16 PHP
解析curl提交GET,POST,Cookie的简单方法
2013/06/29 PHP
destoon各类调用汇总
2014/06/20 PHP
Smarty变量调节器失效的解决办法
2014/08/20 PHP
中高级PHP程序员应该掌握哪些技术?
2016/09/23 PHP
php快速导入大量数据的实例方法
2019/09/23 PHP
JS 退出系统并跳转到登录界面的实现代码
2013/06/29 Javascript
Mac/Windows下如何安装Node.js
2013/11/22 Javascript
javascript删除数组元素并且数组长度减小的简单实例
2014/02/14 Javascript
jquery实现弹出div,始终显示在屏幕正中间的简单实例
2014/03/08 Javascript
node.js中的events.emitter.removeAllListeners方法使用说明
2014/12/10 Javascript
javascript框架设计之浏览器的嗅探和特征侦测
2015/06/23 Javascript
js代码实现无缝滚动(文字和图片)
2015/08/20 Javascript
JS实现选中当前菜单后高亮显示的导航条效果
2015/10/15 Javascript
JS实现新浪博客左侧的Blog管理菜单效果代码
2015/10/22 Javascript
20分钟成功编写bootstrap响应式页面 就这么简单
2016/05/12 Javascript
基于Bootstrap实现图片轮播效果
2016/05/22 Javascript
半个小时学json(json传递示例)
2016/12/25 Javascript
Python实现115网盘自动下载的方法
2014/09/30 Python
flask + pymysql操作Mysql数据库的实例
2017/11/13 Python
win10系统下Anaconda3安装配置方法图文教程
2018/09/19 Python
Python socket实现多对多全双工通信的方法
2019/02/13 Python
在Keras中实现保存和加载权重及模型结构
2020/06/15 Python
CSS3地图动态实例代码(圆圈向外扩散)
2018/06/15 HTML / CSS
html5 canvas的绘制文本自动换行的示例代码
2018/09/17 HTML / CSS
伦敦高级内衣品牌:Agent Provocateur(大内密探)
2016/08/23 全球购物
美体小铺英国官网:The Body Shop英国
2017/01/24 全球购物
aden + anais官方网站:婴儿襁褓、毯子、尿布和服装
2017/06/21 全球购物
俄罗斯外国汽车和国产汽车配件网上商店:Движком
2020/04/19 全球购物
如果NULL定义成#define NULL((char *)0)难道不就可以向函数传入不加转换的NULL了吗
2012/02/15 面试题
高三霸气励志标语
2014/06/24 职场文书
研究生简历自我评价范文
2014/09/13 职场文书
教师群众路线教育实践活动学习笔记
2014/11/05 职场文书
学校社团活动总结
2015/05/07 职场文书
python编写函数注意事项总结
2021/03/29 Python
全面盘点MySQL中的那些重要日志文件
2021/11/27 MySQL