箱型图通过绘制连续型变量的五数总结,即最小值,下四分位数,中位数,上四分位数以及最大值来描述连续型变量的分布
箱型图能够显示可能的离群点(范围±1.5*IQR以外的值,IQR表示四分位距,即上四分位与下四分位)的观测
#例子
boxplot(mtcars$mpg,main="Box plot",ylab="Miles per Gallon")
#使用boxplot.stats返回用于构建图形的统计量(即五数)
boxplot.stats(mtcars$mpg)
例子2,使用并列箱型图进行跨组比较
箱型图也可以展示单个变量或分组变量。格式为
boxplot(formula,data=dataframe)
其中formula是一个公式,示例公式为y~A,这将为类别型变量A的每个类别并列地生成数值型变量y的箱型图(简单来说就是通过A进行分组,再把分好组的y显示成并列的箱型图)
参数y~A*B则为类别型参数A和B所有水平的两两组合生成数值型变零y的箱型图
参数varwidth=TRUE 将使得箱型图的宽度与其样本大小的平方根成正比
参数notch=TRUE,可以得到含凹槽的箱型图
参数horiznotallow=TRUE可以反转坐标轴的方向
#例子,研究四缸,六缸,8缸发动机对每加仑汽车行驶里程数的影响
boxplot(mtcars$mpg~mtcars$cyl,
horizontal=TRUE,
notch=TRUE,varwidth=TRUE,col=c("red","blue","green"),
main="Car Mileage Date",
xlab="Number of Cylinders",
ylab = "Miles Per Gallon")
例子2,2有两个交叉因子的箱型图
多个交叉因子的x轴标签会是各因子类别的联结例如交叉因子A的类别为c(“a”,“b”)两个类别,交叉因子B的类别为c(1,2)两个类别如果不进行处理的话x轴标签将为c(“a.1”,“a.2”,“b.1”,“b.2”)
但是这样的的标签并不能够很好的表示标签的含义。所以有时候需要重新设置因子(即修改类别标签)
#重新设置因子是为了x轴刻度的标签,因为它是两个变量因子值的联结如果不设定就会变成(4.0,4.1,6.0,6.1,8.0,8.1)
#创建气缸数量的因子
mtcars$cyl.f <- factor(mtcars$cyl,levels=c(4,6,8),labels=c("4","6","8"))
#创建变速箱类型的因子
mtcars$am.f <- factor(mtcars$am,levels = c(0,1),labels=c("auto","standard"))
attach(mtcars)
boxplot(mpg~am.f*cyl.f,
varwidth=TRUE,
col=c("gold","darkgreen"),
main="MPG Distribution by Auto Type",
xlab="Auto Type",ylab="Miles Per Gallon")
例子3,小提琴图
小提琴图是箱型图与核密度图的结合,每部分图形的占比表示有多少比例的数值是在这一区域的
黑色箱型的范围是下四分位点到上四分位点,细黑线表示须
小提琴图是通过vioplot包中的vioplot()函数绘制
注意vioplot()函数要求绘制的不同组分离到不同的变量中并不能像barplot()函数那样自己进行分组。
library(vioplot)
x1 <- mtcars$mpg[mtcars$cyl==4]
x2 <- mtcars$mpg[mtcars$cyl==6]
x3 <- mtcars$mpg[mtcars$cyl==8]
vioplot(x1,x2,x3,names = c("cyl4","cyl6","cyl8"),col="gold",
main="Car Mileage Date",
xlab="Number of Cylinders",
ylab = "Miles Per Gallon")
结束总结:
制作箱型图的函数有boxplot((),vioplot(),vioplot()函数制作的为小提琴图,它是箱型图与核密度图的结合。
boxplot()函数可以制作单个箱型图,也可以制作多组箱型图(通过分组)
boxplot()函数常用参数有varwidth,notch,horizontal