0
点赞
收藏
分享

微信扫一扫

Python之数据分析(动画效果、animation模块、气泡动画)


文章目录

  • ​​1、动画效果​​
  • ​​2、原理分析​​
  • ​​3、动画源码​​


本篇文章其实与数据分析没有太大关系,因为是涉及到数据分析的数据可视化方面的内容,因此也必须要学习。主要内容是如何制作一个气泡动画效果,当然也是使用matplotlib模块下的animation模块。

1、动画效果

Python之数据分析(动画效果、animation模块、气泡动画)_原理分析


动态图片是限制了大小的,所以可能清晰度不是很好,这里再来一张静态图片吧:

Python之数据分析(动画效果、animation模块、气泡动画)_数组_02


就这些泡泡会一个一个膨胀,最后爆炸,然后再随机位置重生,再继续膨胀,不断产生新的泡泡。

2、原理分析

  • 1)导入库:import matplotlib.animation as ma
  • 2)def 更新函数(顺序号):
    更新画面帧来渲染
  • 3)创建动画:ma.FuncAnimation(图形对象(mp.gcf()), 更新函数, interval=间隔时间(毫秒))

3、动画源码

import numpy as np
import matplotlib.pylab as mp
import matplotlib.animation as ma

n_bubbles = 100 # 定义100个气泡

# 将气泡(100个0)放进数组里面,并定义复合及结构
# # 气泡应该有位置、大小、上升速度、颜色四个属性
bubbles = np.zeros(n_bubbles, dtype=[
('position', float, 2), # 2个float类型数据,确定位置
('size', float, 1),
('growth', float, 1),
('color', float, 4),
])

# 将位置定为大小是0到1均匀分布的随机数,排列是100行2列的二维数组
bubbles['position'] = np.random.uniform(0, 1, (n_bubbles, 2))
bubbles['size'] = np.random.uniform(50, 750, n_bubbles) # 大小
bubbles['growth'] = np.random.uniform(30, 150, n_bubbles) # 上升速度
bubbles['color'] = np.random.uniform(0, 1, (n_bubbles, 4)) # 颜色

# 显示气泡
mp.figure("Bubbles", facecolor="lightgray")
mp.title("Bubbles", fontsize=20)
# 关掉水平轴与纵轴
mp.xticks(())
mp.yticks(())

# 绘制气泡
# 位置:所有行的第0列是x坐标,所有行的第1列作为y坐标
# 大小:用一个数组表示大小
sc = mp.scatter(
bubbles['position'][:, 0],
bubbles['position'][:, 1],
s = bubbles['size'],
c = bubbles['color'],
)

# 定义动画函数
def update(number):
bubbles['size'] += bubbles['growth'] # 大小变化:加上上升速度


# 记录想要破裂的气泡的索引
burst = number % n_bubbles
# 破裂气泡:改变位置,并置为0
bubbles['position'][burst] = \
np.random.uniform(0, 1, 2)
bubbles['size'][burst] = 0
# 重新生成气泡
bubbles['growth'][burst] = \
np.random.uniform(30, 150)
bubbles['color'][burst] = \
np.random.uniform(0, 1, 4)

# 改变新气泡位置
sc.set_offsets(bubbles['position'])
# 修改大小
sc.set_sizes(bubbles['size'])
# 修改新气泡颜色
sc.set_facecolor(bubbles['color'])

# 生成动画:每个10毫秒调用一次动画函数
anim = ma.FuncAnimation(mp.gcf(), update, interval=10)

mp.show()


举报

相关推荐

0 条评论