背景介绍
您可能会问,为什么不适用MATLAB等比较专业的绘图软件来绘图呢?这是因为我们要做的工作是集文本处理和数据绘图于一体。专业绘图软件适合于使用向量、矩阵等数据结构绘图,然而,我们面对的是如自然语言一样的log文本。在自然语言处理方面,Scala、Python等现在语言使用十分方便。若您是搞Spark,使用Scala再合适不过了!!
breeze-viz介绍
breeze-viz是git开源项目scalanlp/breeze的一部分,它能在java/scala语言环境绘制x-y点图,统计图,二维矩阵灰度图
现在我们介绍viz能够绘制的3类图形
点、线图
它用2个breeze vector变量分别表示横坐标点和竖坐标点,在x-y轴上绘制出点。同一图上可同时绘制 . + - 3种形状的点,用以对比不同竖坐标数据。
统计图
它可以将离散数据集中的数据分布在每个区间里的个数统计出来,表示一种区间统计信息。viz用scala Array存储数据,通过指定区间个数和数据的跨度自动划分区间长度。
二维矩阵图
它能将矩阵里面的数据按值的相对大小以灰度形式显示,上图便是元素随机赋值的矩阵的表示效果,是不是特别像80年度信号不好的黑白电视。
项目搭建
breeze-viz
我们下载breeze-viz jar包后还有下载它的全部Compile Dependencies(scala runtime/compiler除外),就在maven breeze-viz网页下面,因为运行的时候需要这些jar Dependencies。
breeze
term macros
缺失的便是macros,你就去breeze的Compile Dependencies里下载它的依赖macros。
下载其他依赖…
创建绘图工程
大功告成!!import breeze.linalg.{DenseMatrix => BDM, DenseVector => BDV, linspace} import breeze.plot._ /** * Created by Administrator on 2016/1/13. */ object Test { def main(args: Array[String]) { val a = new BDV[Int](1 to 3 toArray) val b = new BDM[Int](3, 3, 1 to 9 toArray) val f = Figure() val p = f.subplot(0) val x = linspace(0.0, 1.0) p += plot(x, x :^ 2.0) p += plot(x, x :^ 3.0, '.') p.xlabel = "x axis" p.ylabel = "y axis" f.saveas("d:\\lines.png") val p2 = f.subplot(2, 1, 1) val g = breeze.stats.distributions.Gaussian(0, 1) p2 += hist(g.sample(100000), 1000) p2.title = "A normal distribution" f.saveas("d:\\subplots.png") val f2 = Figure() f2.subplot(0) += image(BDM.rand(200, 200)) f2.saveas("d:\\image.png") } }1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
一些样例
作者介绍