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设置饼图直径的大小,默认为1,lty=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)的调用来代替x和y参数(x 和y 用来定位图例的x和y坐标),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生成带槽线的箱线图
两个自变量:cyl,am
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.7,main设置标题,,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.7,groups()分组显示,gcolor=x$color填充颜色,pch=19设置显示为实心圆点
图形解释:可以看出4缸的汽车最省油,8缸的汽车最不省油