参考资料:R语言实战【第2版】
1、散点图矩阵
pairs()函数可以创建基础的散点图矩阵。下面代码用于绘制一个散点图矩阵,包含mtcars数据集中的mpg、disp、drat和wt四个变量:
pairs(~mpg+disp+drat+wt,data=mtcars,main="Basic Scatter Plot Matrix")
作图结果如下,在此图中我们可以看到所有指定变量的二元关系。值得注意的是,主对角线的上方和下方的六幅散点图是相同的,women也可以通过调整参数,只显示下三角或上三角的图形。例如upper.panel=NULL时,将只生成下三角图形。
pairs(~mpg+disp+drat+wt,data=mtcars,upper.panel=NULL,main="Basic Scatter Plot Matrix")
car包中的scatterplotMatrix()函数也可以生成散点图矩阵,并有以下可选操作:
①以某个因子为条件绘制散点图矩阵
②包含线性和平滑拟合曲线
③在主对角线放置箱线图、密度图或直方图
④在各单元格的边界添加轴须图
# 加载car包
library(car)
# 绘制散点图矩阵
scatterplotMatrix(~mpg+disp+drat+wt,data=mtcars,main="Sctter Plot Matrix via car Package")
R语言还提供了许多其他的方式来创建散点图矩阵,如:glus包中的cpars()函数,TeachingDemos包中的pairs2()函数,HH包中的xysplom()函数,ResourceSelection包中的kepairs()函数和SMPracticals包中的pairs.mod()函数。
2、高密度散点图
当数据点重叠很严重时,用散点图观察变量关系就显得“力不从心”了,如下:
#设置随机种子
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")
# 绘制一幅标准的散点图
with(mydata,plot(x,y,pch=19,main="Scatter Plot with 10,000 Observations"))
由上图可看出,数据点的重叠导致识别x和y的关系变得异常困难。针对这种情况,R语言提供了一些解决办法。我们可以使用封箱、颜色和透明度来指明图中任意点上重叠点的数目。
smoothScatter()函数可以利用核密度估计生成用颜色密度来表示点分布的散点图,如下:
with(mydata,smoothScatter(x,y,main="Scatter Plot Colored by Smoothed Densities"))
hexbin包中的hexbin()函数将二元变量的封箱放到六边形单元格中,如下: