python可视化篇之流式数据监控的实现可视化篇之流式数据监控的实现
主要介绍了python可视化篇之流式数据监控的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需
要的朋友们下面随着小编来一起学习学习吧
preface
流式数据的监控,以下主要是从算法的呈现出发,提供一种python的实现思路
其中:
1.python是2.X版本
2.提供两种实现思路,一是基于matplotlib的animation,一是基于matplotlib的ion
话不多说,先了解大概的效果,如下:
一、一点构思一、一点构思
在做此流数据输出可视化前,一直在捣鼓nupic框架,其内部HTM算法主要是一种智能的异常检测算法,是目前AI框架中垂直领域下的一股清流,但由于其实
现的例子对应的流数据展示并非我想要的,故此借鉴后自己重新写了一个,主要是达到三个目的,一是展示真实数据的波动,二是展示各波动的异常得分,三
是罗列异常的点。
上述的输出结构并非重点,重点是其实时更新的机制,了解后即可自行定义。另,js对于这种流数据展示应该不难,所以本文主要立足的是算法的呈现角度以
及python的实现。
二、二、matplotlib animation实现思路实现思路
http://matplotlib.org/api/animation_api.html 链接是matplotlib animation的官方api文档
(一)、骨架与实时更新(一)、骨架与实时更新
animation翻译过来就是动画,其动画展示核心主要有三个:1是动画的骨架先搭好,就是图像的边边框框这些,2是更新的过程,即传入实时数据时图形的变化
方法,3是FuncAnimation方法结尾。
下面以一个小例子做进一步说明:
1.对于动画的骨架:
# initial the figure.
x = []
y = []
fig = plt.figure(figsize=(18, 8), facecolor="white")
ax1 = fig.add_subplot(111)
p1, = ax1.plot(x, y, linestyle="dashed", color="red")
以上分别对应初始化空数据,初始化图形大小和背景颜色,插入子图(三个数字分别表示几行几列第几个位置),初始化图形(数据为空)。
import numpy as np
x = np.arange(0, 1000, 1)
y = np.random.normal(100, 10, 1000)
随机生成一些作图数据,下面定义update过程。
2.对于更新过程:
def update(i):
x.append(xs[i])
y.append(ys[i])
ax1.set_xlim(min(x),max(x)+1)
ax1.set_ylim(min(y),max(y)+1)
p1.set_data(x,y)
ax1.figure.canvas.draw()
return p1