本章,我们主要关注用于展示双变量间关系和多变量间关系的绘图方法
当数据点重叠很严重时,用散点图来观察变量关系就显得“力不从心”,这时就需要使用高密度图来显示双变量之间关系。
示例
#设置数据
set.seed(1234)
n <- 10000
c1 <- matrix(rnorm(n,mean = 0,sd=0.5),ncol=2)
c2 <- matrix(rnorm(n,mean=3,sd=2),ncol=2)
mydata <- rbind(c1,c2)
#把矩阵转换为表格
mydata <- as.data.frame(mydata)
names(mydata) <- c("x","y")
attach(mydata)
#制作散点图
plot(mydata$x,mydata$y,pch=19,main="Scatter Plot with 10000 Observations")
#数据点的重叠导致识别x与y间的关系变得异常困难,可以使用封箱,颜色和透明度来指明图中任意点上的重叠的数目
#smoothScatter()函数可以利用核密度估计生成用颜色密度来表示点分布的散点图
#代码如下
attach(mydata)
smoothScatter(mydata$x,mydata$y,main="Scatter Plot Colored by smoothed Densities")
hexbin包中的hexbin()函数将二元变量的封箱放在六边形单元格中。
用六边形封箱图展示各点上覆盖观测点数目
示例如下
其中数据是上例中的数据
install.packages("hexbin")
library(hexbin)
attach(mydata)
#xbins用来控制生成的六边形的数量,xbins越少生成的六边形的数量越少,每个六边形包含的点就越多
bin <- hexbin(mydata$x,mydata$y,xbins=20)
plot(bin,main="Hexagonal Binning with 10000 Observations")
小结:
绘制散点图时,当点的数量非常多时就不容易看出趋势,这时就需要使用高密度图
绘制高密度图有两种方式,分别使用smoothscatter()函数和hexbin包中的hexbin()函数
使用smoothscatter()函数时点的密度不同会呈现不同的颜色,密度越高颜色越深。
使用hexbin()函数时会把点封装在相同大小不同颜色的六边形中,每个六边形封装的点越多颜色越深,一次来观察点的趋势。