R语言统计分析——条形图

参考资料:R语言实战【第2版】

        条形图通过垂直的或水平的条形展示了类别型变量的分布(频数)。函数barplot()的最简单用法是:

        barplot(height)

其中height是一个向量或一个矩阵。

本文中数据案例来自“vcd”包,需在第一次使用之前安装它。

1、简单条形图

        若height是一个向量,则它的值就确定了各条形的高度,并将绘制一幅垂直的条形图。使用horiz=TRUE则会生成一幅水平条形图。我们也可以添加标注选项。选项main可田间一个图形标题,而xlab和ylab则会分别添加x轴和y轴标签。

library(vcd)
counts<-table(Arthritis$Improved)
counts
# 绘制简单条形图(柱形图)
barplot(counts,
        main="Simple Bar Plot",
        xlab="Improved",
        ylab="Frequency")
# 绘制水平条形图
barplot(counts,
        main="Horizontal Bar Plot",
        xlab="Frequency",
        ylab="Improved",
        horiz=TRUE)

        若要绘制的类别型变量是一个因子或有序型因子,就可以是用函数plot()快速创建一幅垂直条形图。由于Arthritis$Improve是一个因素,所以代码可以写为:

plot(Arthritis$Improved,
     main="Simple Bar Plot",
     xlab="Improved",
     ylab="Frequency")
plot(Arthritis$Improved,
     horiz=TRUE,
     main="Horizontal Bar Plot",
     xlab="Frequency",
     ylab="Improved")

2、堆砌条形图和分组条形图

        如果height是一个矩阵而不是一个向量,则绘图结果将是一幅堆砌条形图或分组条形图。若beside=FALSE(默认值),则矩阵中的每一列都将生成图中的一个条形,各列中的值将给出堆砌的“子条”的高度。若beside=TRUE,则矩阵中的每一列都表示一个分组,各列中的值将并列而不是堆砌。

# 加载vcd包
library(vcd)
counts<-table(Arthritis$Improved,
              Arthritis$Treatment)
counts
# 堆砌条形图
barplot(counts,
        main="Stacked Bar Plot",
        xlab="Treatment",
        ylab="Frequency",
        col=c('red','yellow','green'),
        legend=rownames(counts))
# 分组条形图
barplot(counts,
        beside=TRUE,
        main="Grouped Bar Plot",
        xlab="Treatment",
        ylab="Frequency",
        col=c("red","yellow","green"),
        legend=rownames(counts))

3、均值条形图

        条形图不一定要基于技术数据获取频率数据。我们可以使用数据整合函数并将结果传递给barplot()函数,来创建表示均值、中位数、标准差等的条形图。

states<-data.frame(state.region,state.x77)
means<-aggregate(states$Illiteracy,
                 by=list(state.region),
                 FUN=mean)
# 展示数据
means
# 将均值从小到达排序
means<-means[order(means$x),]
means
# 创建条形图
barplot(means$x,names.arg=means$Group.1)
# 添加标题
title('Mean Illiteracy Rate')

        我们还可以进一步完善这个示例:如使用gplots包中的barplot2()函数创建叠加有置信区间的均值条形图,可以通过help(barplot2)看到更多的例子。

4、条形图的微调

        有若干种方式可微调条形图的外观。例如,随着条数的增多,条形的标签可能会开始重叠。我们可以使用参数cex.names来减小字号。将其指定为小于1的值可以缩小标签的大小。可选的参数names.arg允许我们指定一个字符向量作为条形的标签名。同样也可以使用图形参数辅助调整文本间隔。

# 增加y边界的大小
par(mar=c(5,8,4,2))
# 旋转条形的标签
par(las=2)
counts<-table(Arthritis$Improved)
barplot(counts,
        main="Treatment Outcome",
        horiz=TRUE,
        cex.names=0.8,
        names.arg=c('No Improvement',
                    'Some Improvement',
                    'Marked Improvement'))

par()函数能够让我们对R的默认图形做出大量修改。

R语言统计分析——图形文本、自定义坐标轴和图例_r语言全框坐标轴-CSDN博客

R语言统计分析——图形参数_r语言 "ces.axis"不是图形参数-CSDN博客

5、棘状图

        棘状图(spinogram)是对堆砌条形图的重缩放,这样每个条形的高度均为1,每一段的高度即表示比例。棘状图可由vcd包中的函数spine()绘制。

# 加载vcd包
library(vcd)
attach(Arthritis)
counts<-table(Treatment,Improved)
spine(counts,main="Spinogram Example")
detach(Arthritis)

  • 14
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值