R语言条形图的制作--barplot()

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

在这里插入图片描述
例子3,使用plot()函数绘制条形图
如果像上面的例子那样,绘制的类别型变量是一个因子或有序因子,可以直接使用plot()函数快速创建条形图,这样就不用再通过table()函数进行处理变量。图片效果与例子1相同

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

在这里插入图片描述
例子4,使用数据整合函数 aggregate()并将结果传递给barplot()函数,来创建表示均值,中位数,标准值等条形图
能够如此作图的原因是因为我们可以向作图函数barplot()只传递一个数值向量,再通过参数names.arg指定横坐标的标签,(arg为英文自变量的含义)
这样我们我们输入各个分组后各组的平均值的值向量、在通过参数names.arg指定各组名称为横坐标标签就可以制作成一个条形图了

#使用数据整合函数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")

在这里插入图片描述
例子5,条形图的微调
cex.names参数调整字号
names.arg指定字符向量作为条形的标签图
las可以调整标签的参数,las=2为水平方向,las=0为垂直方向

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

在这里插入图片描述
例子6,棘状图
棘状图–棘状图对堆砌条形图进行了重缩放,这样让每列生成的条形图的高度均为1,换句话说它把每一列的数值替换为此数值在这一列数值总和的占比。
棘状图可以由vcd包中的函数spine()绘制

library(vcd)
attach(Arthritis)
counts <- table(Treatment,Improved)
spine(counts,main="Spinogram Example")

在这里插入图片描述
结束总结
能够制作条形图的函数有三个分别是barplot()函数,plot()函数和vcd包中的spine()函数
plot()函数可以直接输入分类变量,不用再通过table()处理分类变量把它变成含有分类变量各个元素频数的表格。
spine()函数可以生成棘状图
条形图可以绘制成水平的,但是此时应注意修改x轴坐标的名称
当需要绘制条形图的是一个数据框时此时会生成堆砌或者分组的条形图。生成什么样的条形图由参数beside决定,当beside=FALSE时生成堆砌的条形图(每一列的数值将堆砌在一个条形上),否则生成分组的条形图
当函数barplot()的参数height是一个数值向量时(只有数值不附带索引),此时可以通过names.arg参数指定x轴刻度的标签

  • 11
    点赞
  • 78
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
R语言条形图(barplot)是一种常用的数据可视化方式,可以通过条形的高度直观地展示数据之间的比较关系。以下是关于R语言条形图的介绍和用法: R语言中使用barplot函数来创建条形图,可以通过指定数据的向量或矩阵作为输入。具体的用法如下: barplot(height, names.arg, xlab, ylab, main) 其中,height是一个用于指定条形高度的向量或矩阵,names.arg是一个可选参数,用于指定条形的标签,xlab和ylab用于设置x轴和y轴的标签,main则用于设置图表的标题。 除了基本的参数以外,barplot函数还提供了其他一些选项来自定义条形图的外观,如设置颜色、图例、标记等等。可以通过自定义参数来实现这些功能,例如: barplot(height, col, legend.text, args.legend) 其中,col用于设置条形的颜色,legend.text用于设置图例的标签,args.legend用于设置图例的位置和其他样式。 此外,barplot函数还可以通过设置horiz参数为TRUE来生成水平条形图,通过设置beside参数为TRUE来生成并列条形图。 当然,除了barplot函数外,R语言中还有其他的绘图函数可以创建条形图,如ggplot2库中的geom_bar函数、plotly库中的plot_ly函数等等,具体使用方法可以根据需要选择。 总之,R语言条形图是一种简单直观的数据可视化方式,可以帮助我们更好地理解和分析数据。通过灵活设置参数,我们可以对条形图进行个性化的定制,使其更加符合我们的需求和展示风格。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值