实验目的
掌握R语言中Hexbin图的含义及绘制
实验原理
在本实验中,散点图的使用频率很高,它既可以描绘单变量也可以描绘多变量,但是我们需要注意的是:当数据量很大时,我们可能难以从散点图中发现数据的结构。比如说下图,是模拟随机生成10000组数的散点图,从中观察大量散点聚集区的数据结构就比较困难。这就是一个大数据问题。大数据问题一般需要不同的可视化方式。
实验步骤
模拟生成10000组数的散点图
> x<-rnorm(10000,mean=0,sd=100)
> y<-x+rnorm(10000,mean=0,sd=100)
> lr<-lm(y~x)
> plot(x,y)
> points(x, lr$coefficients[1] + lr$coefficients[2] * x,type = "l", col = 1)
尽管我们可以运用颜色和透明度来解决这个问题,但是运用Hexbin图会更好。Hexbin图结合了散点图和直方图的特点。和散点图类似,Hexbin图也是在x,y坐标轴画图,第三个维度是运用阴影来描述数据的集中度。
下图就是用Hexbin图展示相同的数据,可以看出数据更加密集地聚集在聚集处的中心,大致沿着回归线分布。
> library(hexbin)
> hexbinplot(y ~ x,type=c("g", "r"))
如下面的例子使用随机生成的大量数据绘制hexbin图:
> library(hexbin)
> mixdata <-
+ data.frame(x = c(rnorm(5000),rnorm(5000,4,1.5)),
+ y = c(rnorm(5000),rnorm(5000,2,3)),
+ a = gl(2, 5000))
> hexbinplot(y ~ x, mixdata, aspect = 1,
+ trans = sqrt, inv = function(x) x^2)
> hexbinplot(y ~ x | a, mixdata)
同样hexbinplot函数还可以绘制不同类型的图形:
> hexbinplot(y ~ x | a, mixdata, style = "lattice",
+ xbnds = "data", ybnds = "data")
另外两个例子:
> hexbinplot(y ~ x | a, mixdata, style = "nested.centroids")
> hexbinplot(y ~ x | a, mixdata, style = "nested.centroids",
+ border = FALSE, type = c("g", "smooth"))