如你所见,直方图上叠加核密度图,专业来说,核密度估计是用于估计随机变量概率密度函数的一种非参数方法。核密度图是用来观察连续型变量分布的有效方法。绘制密度图的方法:
plot(density(x))
其中的x是一个数量型向量,由于plot()函数会创建一副新的图形,要向一幅已经存在的图形上叠加密度曲线,可使用lines()函数:
>par(mfrow=c(2,2)) #图形按照2行2列排列
> hist(mtcars$mpg)#简单直方图
> hist(mtcars$mpg,breaks=12,col="red",xlab = "Miles Per Gallon",main="Colored histogram with 12 bins")#增加组数和颜色
增加轴须图如下:
> hist(mtcars$mpg,freq=FALSE,breaks=12,col="red",xlab = "Miles Per Gallon",main="Histogram,rug plot,density curve")
> rug(jitter(mtcars$mpg))
> lines(density(mtcars$mpg),col="blue",lwd=2)
添加正态密度曲线和外框如下:
> x <- mtcars$mpg
> h<- hist(x,breaks=12,col="red",xlab="Miles Per Gallon",main ="Histogram with normal curve and box" )
> xfit<-seq(min(x),max(x),length=40)
> yfit<-dnorm(xfit,mean=mean(x),sd=sd(x))
> yfit <-yfit*diff(h$mids[1:2])*length(x)
> lines(xfit,yfit,col="blue",lwd=2)
> box()

箱线图
箱线图(又称为盒须图)通过绘制连续型变量的五数总括,即最小数、下四分位数、中位数(第50百分数)、上四分位数(第75百分数)以及最大值,描述了连续型变量的分布。箱线图能够显示出可能的离散群点(范围1.5*IQR,IQR表四分位 ,上四分位数与下四分位数的 )的观测。简单箱线图,代码如下:
>boxplot(mtcars$mpg,main="box plot",ylab="Miles per Gallon")

上述标注根据统计结果标注上去,运行函数boxplot.stats()
> boxplot.stats(mtcars$mpg)
$stats
[1] 10.40 15.35 19.20 22.80 33.90
$n
[1] 32
$conf
[1] 17.11916 21.28084
$out
numeric(0)
从运行结果可知,每加仑汽油行驶公里数的中位数(Median)为19.2,50%的值都落在15.3-22.8之间,最小值(lower linge)10.40,最大值(upper linge)33.90。
并列箱线图进行跨组比较:
箱线图可以展示单个变量或分组变量,使用格式;
boxplot(formula,data=dataframe)
其中formula是公式,dataframe是代表数据的数据框,一个公式为y ~ A,这将为类别型变量A的每个值并列地生成数值型变量y的箱线图。公式y ~ A*B 将为类别型变量A和B所有水平的两两组合生成值型变量y的箱线图。
添加参数varwidth=TRUE将使箱线图的宽度与其样本大小的平方根成正 比。参数horizontal=TRUE可以反转坐标轴的方向,使用并列箱线图研究四缸、六缸、八缸发动机对每加仑汽油行驶的英里数的影响:

图中可以看到不同组间的油耗区别非常明显 。同时也可以发现,六缸型的每加仑汽油行驶的英里数分布较其他两个车型更为均匀 。与四缸和八缸车型相比,四缸车型的每加仑汽油行驶的英里数分布最广( 且正偏 )。八缸组还有一个离散点。
通过增加notch=TRUE,可以得到凹槽箱线图,若两个凹槽互不重叠,表明它们的中位数有显著差异,代码如下:
>boxplot(mpg~cyl,data=mtcars,notch=TRUE,varwidth=TRUE,col="red",main="Car Mileage Date",xlab="Number of Cylinders",ylab="Miles Per Gallon") #col以红色填充箱线图,varwidth=TRUE使箱线图的宽度和各自样本大小成正比。

还可以通过多个分组因子绘制箱线图,不同缸数和不同变速箱类型的车型绘制了每加仑汽油行驶英里数的箱线图:
> mtcars
> mtcars
> boxplot(mpg~am.f*cyl.f,data=mtcars,varwidth=TRUE,col=c("gold","darkgreen"),main="MPG Distribution by Auto Type",xlab="Auto Type ")#生产箱线图

小提琴图
小提琴图是箱线图与核密度图的结合。可以使用vioplot 中的vioplot()函数绘制它。 在第一次使用之前需要安装vioplot(),vioplot()的使用格式:
Vioplot(x1,x2,...,names=,col=)
其中x1, x2, ...表绘制的一个或多个数值向量(将为每个向量绘制一幅小提琴图)。参数names是小提琴图中标签的字符向量,而col是一个为每幅小提琴图指定颜色向量。
简单代码如下:
>install.packages("vioplot")
>library(vioplot)
> x1 <- mtcars
> x2 <- mtcars
> x3 <- mtcars
> vioplot(x1,x2,x3,names=c("4 cyl","6 cyl","8 cyl"),col="gold")
> title("Violin Plots of Miles Per Gallon")

小提琴图基本上是核密度图以镜像方式在箱线图上的添加。在图中,白点是中位数,黑色盒型的范围是下四分位点到上四分位点,细黑线表示须,外部形状即核密度估计。
ggplot绘制箱线图和小提琴图
简单箱线图
>install.packages("ggplot")
>library(ggplot2)
> p <- ggplot(mpg, aes(class,hwy,fill=class))
> p+geom_boxplot()

>p+geom_violin(alpha=0.3,width=0.9)+ geom_jitter(shape=21)

点图
点图提供一种在简单水平刻度上绘制大量有标签值的方法 。可以使用dotchart()函数创建点图,格式为:
dotchart(x,laberls=)
其中的x是一个数值向量,而labels是由每个点的标签组成的向量。可以通过添加参数groups来选定一个因子,用以指定x中元素的分组方式。如果这样做,参数gcolor可以控制不同组标签的颜色,cex可控制标签的大小。mtcars数据集示例:
> dotchart(mtcars$mpg,labels = row.names(mtcars),cex=.7,main="Gas Mileage for Car Models",xlab="Miles Per Gallon")

上图可以在同一个水平上观察每种车型的每加仑汽油行驶公里数。通常来说,点图在经过排序并分组变量被不同的符号和颜色区分开的时候最有用,分组,排序,着色后的点图,代码如下:
> x <- mtcars[order(mtcars$mpg),]
> x
> x
> x
> x
> dotchart(x

根据每加仑英里数( 最低到最高) 数据 mtcars进行排序,结果保存为数据框 x。数 向量cyl被 转换为一个因子。一个字符型向量(color)被添加到到了数据框 x中,根据cyl的值,它所含的值为"red"、"blue"或"darkgreen“,此外,各数据点的标签取自数据框的行名(车辆型号),数据点根据气缸数量进行分组,数字4、6、8以黑色进行显示。点和标签的颜色来自color,点以填充的形式表示。
ggplot绘制饼图
> p <- ggplot(mpg, aes(x = factor(1), fill = factor(class))) + geom_bar(width = 1)
> p + coord_polar(theta = "y")
