本篇文章其实与数据分析没有太大关系,因为是涉及到数据分析的数据可视化方面的内容,因此也必须要学习。主要内容是如何制作一个气泡动画效果,当然也是使用matplotlib模块下的animation模块。
1、动画效果
动态图片是限制了大小的,所以可能清晰度不是很好,这里再来一张静态图片吧:
就这些泡泡会一个一个膨胀,最后爆炸,然后再随机位置重生,再继续膨胀,不断产生新的泡泡。
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
bubbles = np.zeros(n_bubbles, dtype=[
('position', float, 2),
('size', float, 1),
('growth', float, 1),
('color', float, 4),
])
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(())
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
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'])
anim = ma.FuncAnimation(mp.gcf(), update, interval=10)
mp.show()
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)