R语言--绘图(条形图、饼图、扇形图、直方图、核密度图、箱线图)


1 绘图

1.1 条形图  barplot() (针对离散型变量)

library(vcd)

dat<-Arthritis

counts<-table(dat$Improved)

解释:table求数据框中间取值的频数

 

1)简单条形图(一个变量,一维)

barplot(counts,main="Simple Bar Plot",xlab="Improvement",ylab="Frequency")

 

(2)堆砌条形图(两个变量,二维)

 barplot(counts,col=c("green","yellow","red"))

 

(3)分组条形图

barplot(counts,col=c("green","yellow","red"),beside=T)

解释:beside设置条形图是否需要分组

 

(4)均值条形图

state<-data.frame(state.region,state.x77)  #使用内置数据集,构造一个数据框

mean<-aggregate(state$Illiteracy,by=list(state.region),FUN=mean)

解释:aggregate()汇总函数,state$Illiteracy根据文盲率这个变量,by分组,state.region根据地区分组,FUN=mean汇总函数求平均(注:求每个区域region对应文盲率Illiteracy得平均mean)

mean<-mean[order(mean$x),]  #对行标签对象x排序

 

 barplot(mean$x,names.arg = mean$Group.1)

解释:第一个参数mean$x是画图的对象,第二个参数names.arg是绘制在每个条形或条形组下面的名称的向量。如果省略了这个参数,那么如果这是一个矢量,名字将从height的名字属性中提取,如果是一个矩阵,则从列名中提取。

 

错误:缺少参数height”,也没有缺省值

 

修正:画图时参数没有指定具体

 

5) 棘状图

counts<-table(dat$Improved,dat$Treatment)

spine(counts,main="Spinogram Example")

 

 

1.2 饼图  pie(x,labels)

(1)简单饼图

slices<-c(10,12,4,16,8)

lbls<-c("US","UK","Austrlia","Germany","France")

pie(slices,lables=lbls,main="Simple Pie Chart",radius=0.8,lty=1)

解释:radius设置饼图直径的大小,默认为1lty=1设置线为实线

 

2)进化饼图

 pct<-round(slices/sum(slices)*100)  #把数字转换成百分比

 

lbls1<-paste(lbls," ",pct,"%",sep="")  

解释:paste连接字符串函数,第一个参数lbls是连接的对象,第二个参数是空格,第三个参数是百分比,第四个参数是连接符号%,第五个参数是分隔符sep

 

pie(pct,labels=lbls1,lty=1)

 

(3) 扇形图 fan.plot

library(plotrix)

slices<-c(10,12,4,16,8)

lbls<-c("US","UK","Austrlia","Germany","France")

pie(slices,lbls)

fan.plot(slices,labels = lbls,lty=1)

 

 

 

1.3 直方图 hist() (针对连续型变量)

1)简单直方图

dat<-mtcars

hist(dat$mpg,lty=1)

 

2)进化直方图

hist(dat$mpg,col="green",breaks=12,lty=1)

解释: hist画直方图,第一个参数dat$mpg是画图的对象,col="green"颜色填充为绿色,breaks=12把变量分为12组,lty=1设置为实线

 

3)再进化直方图

hist(dat$mpg,col="green",breaks=12,freq=F,lty=1)  #freq=F设置右侧刻度是百分比

rug(jitter(dat$mpg))  #轴虚图,下方一个个黑色的短线

lines(density(dat$mpg),col="red",lwd=2,lty=1)

解释:lines表示在此图的基础上作图,而不是单独画出来,density概率分布的估计,col设置线条的颜色,lwd设置线条的粗细,lty=1设置为实线,lty=2设置为虚线

 

box()  #把图框起来

 

 

1.4 核密度图  density()

1)简单核密度图

d<-density(dat$mpg)  #mpg单位汽车里程数

plot(d,main="title",lty=1)  #画曲线

polygon(d,col="green",border="red",lty=1)  #给概率密度曲线填色

rug(dat$mpg,col="bule)  #添加轴虚图

2)可比较的核密度图

library(sm)  #加载包

attach(mtcars)  #确定本操作均在数据集mtcars

cyl.f<-factor(cyl,levels=c(4,6,8),labels=c("4 cylinder","6 cylinder","8 cylinder"))

解释:cyl把变量cyl设置为因子型,levels=c(4,6,8)这是cyl的几个水平标签,labels设置图例标签

sm.density.compare(mpg,cyl,xlab="Miles Per Gallon")

解释:sm.density.compare是比较画核密度曲线的,mpg,cyl这是要比较的两个变量,xlab设置横轴标签

title(main="MPG Distribution by Car Cylinder")  #设置图形标题

colfill<-c(2:(1+length(levels(cyl.f))))  #设置颜色

 

legend(locator(1),levels(cyl.f),fill=colfill)  #在图上点一下就出现图例

解释:legend该函数可用于为绘图添加图例可以用对函数locator(1)的调用来代替xy参数x y 用来定位图例的xy坐标),fill如果指定,该参数将导致用指定颜色填充的方框(或用指定颜色的阴影)出现在图例文本旁边。

detach(mtcars)

 

 

1.5 箱线图 boxplot()

1)标准箱线图

 boxplot(mtcars$mpg,main="box ploy",ylab="Miles per Gallon")

箱线图理解:中间这跟黑色线代表是中位数,说明单位汽车行驶的英里数大概是20,黑色线的上下,也就是箱子上下的边界分别是上四分位数(最高的25%)和下四分数(最低的25%),虚线的上端和下端代表最大值和最小值

2)分组箱线图

boxplot(mpg~cyl,data=mtcars)

图形理解:不用的汽车发动车缸数能行驶的英里数比较,可以看出4缸汽车开的的英里数高,即4缸的车省油

 

一个自变量:cyl

boxplot(mpg~cyl,data=mtcars,varwidth=T,notch=T)   

解释:varwidth=T根据样本大小调整粗细,notch=T生成带槽线的箱线图

 

两个自变量:cylam

 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"))

boxplot(mpg~am.f*cyl.f,data=mtcars,varwidth=T,col=c("red","green"))

解释:cyl表示汽车的缸数,am表示汽车是自动挡还是手动挡,levels表示自变量的取值,labels表示横坐标轴刻度的标签,varwidth=T根据样本大小调整粗细

 

3小提琴图  vioplot()

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("4 cyl","6 cyl","8 cyl"),col = "gold")

图形解释:白色点代表其中位数,曲线可以清楚的看到其分布

 

 

1.6 点图

1)原始点图

dotchart(mtcars$mpg,labels=row.names(mtcars),cex=.7,main="Gas Mileage for Car Models",xlab="Miles Per Gallon")

解释:dotchart画点图,mtcars$mpg画图的对象,labels=row.names(mtcars)指定左边显示的标签,cex=.7字体的大小缩放为0.7main设置标题,,xlab设置横坐标轴的显示

 

2)排序后的点图

x<-mtcars[order(mtcars$mpg),]  #让数据集按照mpg排序

> x$cyl<-factor(x$cyl)  #把变量cyl设置为因子型

> x$color[x$cyl==4]<-"red"

> x$color[x$cyl==6]<-"blue"

> x$color[x$cyl==8]<-"darkgreen"

dotchart(x$mpg,labels = row.names(x),cex=.7,groups = x$cyl,gcolor=x$color,pch=19)

解释:dotchart画点图,mtcars$mpg画图的对象,labels=row.names(mtcars)指定左边显示的标签,cex=.7字体的大小缩放为0.7groups()分组显示,gcolor=x$color填充颜色,pch=19设置显示为实心圆点

图形解释:可以看出4缸的汽车最省油,8缸的汽车最不省油

 

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM