教你用Python matplotlib库制作简单的动画

作者:人工智能第一菜鸡 时间:2021-08-20 02:58:49 

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库制作简单的动画

来源:https://blog.csdn.net/weixin_45081640/article/details/117660264

标签:Python,matplotlib,动画
0
投稿

猜你喜欢

  • Python按天实现生成时间范围序列的方法详解

    2022-12-31 13:48:45
  • python实现简单ftp客户端的方法

    2023-12-14 20:07:31
  • SQLserver 数据库危险存储过程删除与恢复方法

    2011-09-30 11:33:54
  • 解决Python复杂zip文件的解压问题

    2021-08-11 05:04:09
  • JavaScript获取时区实现过程解析

    2023-08-22 20:58:34
  • asp如何处理超时事件?

    2009-11-14 20:41:00
  • 安装MySQL5.0后出现1607异常的解决办法

    2009-02-26 15:52:00
  • python+Selenium自动化测试——输入,点击操作

    2023-08-09 07:20:50
  • python交互式图形编程实例(一)

    2022-11-12 14:44:53
  • Mootools 1.2教程(5)——事件处理

    2008-11-19 16:33:00
  • 基于python的BP神经网络及异或实现过程解析

    2021-10-29 00:02:01
  • PHP中的函数嵌套层数限制分析

    2023-11-21 08:43:24
  • 下拉列表两级连动的新方法(二)

    2009-06-04 18:22:00
  • Go语言设计实现在任务栏里提醒你喝水的兔子

    2023-07-15 04:24:22
  • 如何用ASP获知机器的网络配置?

    2010-06-11 19:58:00
  • 功能强大,代码简单的管理菜单

    2008-07-11 16:52:00
  • Dreamweaver制作网页11种技巧详解

    2007-11-05 14:00:00
  • python threading模块的使用指南

    2023-08-10 07:51:59
  • SEM之医疗网站跳出率 逼迫访客跳出网站的六宗罪

    2012-03-05 20:13:36
  • ThinkPHP开发框架函数详解:C方法

    2023-10-18 03:27:04
  • asp之家 网络编程 m.aspxhome.com