您的位置:首页 > 其它

R语言数据可视化之初级绘图(上)

2017-05-11 20:00 162 查看

1、条形图barplot()

  条形图通过垂直的或者水平的条形展示了类别型变量的频数分布。barplot() 可实现条形图的绘制,其调用格式为

barplot(x,xlab,yalb,horiz=F,…)

barplot(x,xlab,ylab,besides=F,col,legend,names.arg,…)

  第一种用法可画出简单的条形图,其中horiz=F表示条形垂直放置。画图使用的数据为R里自带的数据集mtcars。代码如下:

> fcyl<-table(mtcars$cyl)
> barplot(fcyl,xlab="气缸数",ylab="频数",main="垂直的条形图")
> barplot(fcyl,horiz=T,xlab="频数",ylab="气缸数",
+         main="水平的条形图")


  画出的图形如下:



   第二种用法x为matrix,则为堆砌的条形图或者分组的条形图。其中besides=T为分组条形图,否则为堆砌条形图。代码如下:

>cm<-table(mtcars$cyl,mtcars$am)
>barplot(cm,beside=F,xlab="变数箱类型",ylab="气缸数",
col=c("red","yellow","green"),legend.text=
4000
rownames(cm),
main="堆砌的条形图")
>barplot(cm,beside=T,xlab="变数箱类型",ylab="气缸数",
col=c("red","yellow","green"),legend.text=rownames(cm),
main="分组条形图")


   画出的条形图如下:



   条形图除了可以对变量的频数进行画图以外,还可以对变量进行折叠后的均值、中位数、标准差等进行画图。棘状图(vcd包spine())是一种特殊的条形图,它是对堆砌的条形图进行了重缩放,每个条形的高度均为1,表示比例。代码如下:

> meanm<-aggregate(mtcars$mpg,by=list(cyl=mtcars$cyl),mean)#根据cyl对mpg进行折叠,求出折叠后的mpg的均值
> barplot(meanm$x,names.arg = meanm$cyl,main="均值条形图",col=3)
> library(vcd)
> spine(cm,xlab="气缸数",ylab="变数箱类型",main="棘状图")


   画出的图形如下:





   棘状图可以清楚的看出气缸数为4变数箱类型为0的车所占总数比重大约为30%。

2、饼图pie()

   用法如下pie(x,labels,col,…) 。扇形图plotrix包中的fan.plot(),可将每块叠放在一起,方便从直观上比较每块的大小。画出mtcars数据集中气缸数cyl的饼图和扇形图,代码如下:

> percent<-round(fcyl/sum(fcyl)*100)  #计算每块所占的百分比
> lb<-paste(names(fcyl),"\n",percent,"%",sep="")  #为饼图添加百分比标签
> pie(fcyl,labels=lb,main="添加比例值的饼图")
> library(plotrix)
> fan.plot(fcyl,labels=lb,main="添加比例值的扇形图")


   图形如下:





  从上图中可以看出气缸数为8的车占到了总数的44%。

3、直方图hist()

   直方图可以展示连续型变量的分布,x轴上将值域分为若干组,y轴表示相应值的频数。函数用法如下:hist(x,breaks,freq,…),其中breaks表示分组的组数。画出mtcars中mpg的直方图,代码如下

> hist(mtcars$mpg,breaks=12,xlab="油耗量",ylab="频数",main="直方图(breaks=12)",col=8)
> hist(mtcars$mpg,breaks=6,xlab="油耗量",ylab="频数",main="直方图(breaks=6)",col=8)


   画出的图形如下:



4、核密度图plot(density(x))

   核密度估计是用于估计随机变量概率密度函数的一种非参数方法。画出mpg的核密度图,代码如下:

> plot(density(mtcars$mpg),main="简单核密度估计图",xlab="mpg")
> plot(density(mtcars$mpg),main="填充后的核密度估计图",xlab="mpg")
> polygon(density(mtcars$mpg),col="red")  #用红色填充图形下面的区域


   画出的图形如下 :



   核密度图可以用于比较两组之前的差异。使用sm包中的sm.density.compare() 即可实现。用法如下:sm.density.compare(x,factor,…),其中factor是一个分组变量,且需定义为因子。画出不同的气缸数(cyl)下油耗量(mpg)的核密度图,以比较其之间的差别。代码如下:

> cyl1<-factor(mtcars$cyl,levels=c(4,6,8),labels=c("4 cylinder",
+                                                  "6 cylinder",
+                                                  "8 cylinder"))
> sm.density.compare(mtcars$mpg,cyl1,xlab="油耗量",ylab="密度")
> title(main="不同cyl下mpg的核密度估计曲线")#需用title添加图名
> legend(locator(1),fill=c(2:4),levels(cyl1))


   画出的图形如下:



5、箱线图boxplot()

   箱线图可以展示出连续型变量的5个统计量:最小值,下四分位数,中位数,上四分位数,最大值。通过boxplot()函数实现,用法如下:

boxplot(x,….)

boxplot(formula,data=dataframe)

   其中第二种用法中的formula可为:y~A,表示类别型变量A的每个取值分别生成y的箱线图;y~A*B,表示类别型变量A,B所有水平的两两组合生成的y的箱线图。例如分别生成cyl=4,6,8下的mpg的箱线图, 代码如下:

> attach(mtcars)
> mtcars$cyl.f<factor(cyl,levels=c(4,6,8),labels=c("4","6","8"))#定义为因子
>mtcars$am.f<factor(am,levels=c(0,1),labels=c("auto","standard"))
> boxplot(mpg~cyl,xlab="气缸数",ylab="每公里的油耗量",main="mpg~cyl")
> boxplot.stats(mpg) #查看构建图形的统计量,可以看出mpg的最大值,最小值等,50%的值落在15.35和22.8之间
$stats
[1] 10.40 15.35 19.20 22.80 33.90

$n
[1] 32

$conf
[1] 17.11916 21.28084

$out
numeric(0)


  画出的图形如下:



>boxplot(mpg~cyl.f*am.f,data=mtcars,col=c(1,2),main="mpg~cyl.f*am.f",ylab="油耗量")




   从上图中可以比较同种cyl下,变速箱不同,油耗量的不同。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
相关文章推荐