函数barplot()可以绘制条形图,其格式为
barplot(height)
height是一个向量或者矩阵,使用horiz=TRUE可以生成一个水平的条形图,
例子
1,用条形图统计分类变量的频数
注意条形图常用来统计分类变量每一钟元素的频数,此时可以运用table()进行处理分类变量,其可以统计分类变量的各个元素的频次。处理后的结果为table格式而barplot()可以识别table格式
table()函数可以统计列各种元素出现的次数
counts <- table(Arthritis$Improved)counts barplot(counts,xlab = "Improvement",ylab = "Frequency",main = "Simple Bar Ploy")
例子2
生成水平的条形图
barplot()参数horiz可以指定图形是否为水平的条形图
注意生成的水平的条形图时,x,y轴的名称不会跟着变换所以x,y轴的名称应同时跟着变换
barplot(counts,horiz = TRUE ,ylab = "Improvement",xlab = "Frequency",main = "Simple Bar Ploy")
plot(Arthritis$Improved,xlab = "Improvement",ylab = "Frequency",main = "Simple Bar Ploy")#绘制水平的条形图plot(Arthritis$Improved,horiz=TRUE,xlab = "Improvement",ylab = "Frequency",main = "Simple Bar Ploy")
例子3绘制堆砌条形图和分组条形图
如果height是一个矩阵而不是一个向量,则绘制结果将是一幅堆砌条形图或分组条形图
当beside=FALSE(默认值),则生成堆砌条形图–矩阵的每一列都将生成一个条形
当beside=TRUE,则生成分组条形图–矩阵中的每一列都表示一个分组,各列的中值将并列而不是堆砌
注意barplot()中的height要么是向量要么是矩阵,不能是data.frame但是可以是table格式
opar <- par(no.readonly = TRUE)par(opar)par(mfrow=c(1,2))counts <- table(Arthritis$Improved,Arthritis$Treatment)counts#绘制堆砌条形图barplot(counts,main = "Stacked Bar Plot",xlab = "Treatment",ylab="Frequency", col = c("red","yellow","green"),legend=row.names(counts))#绘制分组条形图barplot(counts,beside = TRUE,main = "Stacked Bar Plot",xlab = "Treatment",ylab="Frequency", col = c("red","yellow","green"),legend=row.names(counts))
#使用数据整合函数aggregate()并将结果传递给barplot()函数,来创建表示均值,中位数,标准差等条形图#生成要作图的数据框states <- data.frame(state.region,state.x77)#根据列state.region对列states$Illiteracy进行分组并求每组的均值。#by = list(state.region)指定分组变量#states$Illiteracy为被分组的变量#FUN=mean是指定处理被分组的变量的函数means <- aggregate(states$Illiteracy,by = list(state.region),FUN=mean)#设定数值只能保留2位小数options(digits = 2)#barplot()函数可以输入没有索引的向量,但是这个时候就没有横坐标的标签,#这时就需要通过names.arg参数指定(arg为自变量的意思)par(opar)barplot(means$x,names.arg = means$Group.1)title("Mean Illiteracy Rate")
par(mar=c(5,8,4,2))#las调整标签的参数,2为水平,0为垂直par(las=2)library(vcd)counts <- table(Arthritis$Improved)barplot(counts, main = "Treatment Outcome", horiz = TRUE, #调整标签字体大小 cex.names = 0.8, #修改标签文本 names.arg = c("No Improvement","Some Improvement","Marked Improvement"))
library(vcd)attach(Arthritis)counts <- table(Treatment,Improved)spine(counts,main="Spinogram Example")
联系客服