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

2023-05-16

文章目录

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

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

1、动画效果

11
动态图片是限制了大小的,所以可能清晰度不是很好,这里再来一张静态图片吧:
11
就这些泡泡会一个一个膨胀,最后爆炸,然后再随机位置重生,再继续膨胀,不断产生新的泡泡。

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()
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Python之数据分析(动画效果、animation模块、气泡动画) 的相关文章

随机推荐