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轴刻度的标签

到此这篇关于R语言利用barplot()制作条形图的文章就介绍到这了,更多相关R语言barplot()条形图内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • 如何用R语言绘制饼图和条形图

    R 语言提供来大量的库来实现绘图功能. 饼图,或称饼状图,是一个划分为几个扇形的圆形统计图表,用于描述量.频率或百分比之间的相对关系. R 语言使用 pie() 函数来实现饼图,语法格式如下: pie(x, labels = names(x), edges = 200, radius = 0.8, clockwise = FALSE, init.angle = if(clockwise) 90 else 0, density = NULL, angle = 45, col = NULL, bor

  • R语言利用barplot()制作条形图的各种实例

    前言 函数barplot()可以绘制条形图,其格式为 barplot(height) height是一个向量或者矩阵,使用horiz=TRUE可以生成一个水平的条形图, 例子 1,用条形图统计分类变量的频数 注意条形图常用来统计分类变量每一钟元素的频数,此时可以运用table()进行处理分类变量,其可以统计分类变量的各个元素的频次.处理后的结果为table格式而barplot()可以识别table格式 table()函数可以统计列各种元素出现的次数 counts <- table(Arthrit

  • R语言利用plot()函数画图的基本用法

    plot()函数在R语言画图中位置十分重要,现在就对其具体用法做一个总结. 基本用法: plot(x=x轴数据,y=y轴数据,main="标题",sub="子标题",type="线型",xlab="x轴名称",ylab="y轴名称",xlim = c(x轴范围,x轴范围),ylim = c(y轴范围,y轴范围)) 示例代码为: plot(c(1:6),c(1:6),main="test"

  • R语言利用caret包比较ROC曲线的操作

    说明 我们之前探讨了多种算法,每种算法都有优缺点,因而当我们针对具体问题去判断选择那种算法时,必须对不同的预测模型进行重做评估. 为了简化这个过程,我们使用caret包来生成并比较不同的模型与性能. 操作 加载对应的包与将训练控制算法设置为10折交叉验证,重复次数为3: library(ROCR) library(e1071) library("pROC") library(caret) library("pROC") control = trainControl(

  • R语言利用ggplot2绘制QQ图和箱线图详解

    目录 绘制qq图 函数介绍 例子 绘制boxplot 函数介绍 例子 利用分位点绘制箱线图 将QQ图和箱线图进行融合 函数介绍 参数介绍 注意事项 例子 绘制qq图 在ggplot2中绘制qq图需要两步,geom_qq()将绘制样本分位点,geom_qq_line()将绘制标准正态线 函数介绍 geom_qq() geom_qq( mapping = NULL, data = NULL, geom = "point", position = "identity",

  • R语言利用loess如何去除某个变量对数据的影响详解

    R语言介绍 R语言是用于统计分析,图形表示和报告的编程语言和软件环境. R语言由Ross Ihaka和Robert Gentleman在新西兰奥克兰大学创建,目前由R语言开发核心团队开发. R语言的核心是解释计算机语言,其允许分支和循环以及使用函数的模块化编程. R语言允许与以C,C ++,.Net,Python或FORTRAN语言编写的过程集成以提高效率. R语言在GNU通用公共许可证下免费提供,并为各种操作系统(如Linux,Windows和Mac)提供预编译的二进制版本. R是一个在GNU

  • R语言-t分布正态分布分位数图的实例

    R是用于统计分析.绘图的语言和操作环境. R是属于GNU系统的一个自由.免费.源代码开放的软件,它是一个用于统计计算和统计制图的优秀工具. 它是一套由数据操作.计算和图形展示功能整合而成的套件. 包括:有效的数据存储和处理功能,一套完整的数组(特别是矩阵)计算操作符,拥有完整体系的数据分析工具,为数据分析和显示提供的强大图形功能,一套(源自S语言)完善.简单.有效的编程语言(包括条件.循环.自定义函数.输入输出功能). 如何用RStudio做分位数图呢? #分位数图,画t分布密度带p值 x=se

  • R语言绘图样式设置操作(符号,线条,颜色,文本属性)

    设置图像样式有两种方法,一种是全局修改,一种只针对一幅图片有效. 全局修改 a<-c(1:10) #全局修改 old_par<-par(no.readonly=TRUE) #记录默认样式到变量old_par中 par(lty=2,pch=17) #设置线型lty=2虚线,pch=17实心三角形,键值对的方式进行设置 #第一幅图,已经和默认样式不一样了 b<-rnorm(10) plot(a,b,type='b') #第二幅图,和第一幅图样式一样 b<-rnorm(10) plot(

  • R语言条形图创建方法

    条形图表示矩形条中的数据,条的长度与变量的值成比例. R语言使用函数 barplot() 创建条形图. R 语言可以在条形图中绘制垂直和水平条. 在条形图中,每个条可以给予不同的颜色. 语法 在 R 语言中创建条形图的基本语法是 H 是包含在条形图中使用的数值的向量或矩阵. xlab 是 x 轴的标签. ylab 是 y 轴的标签. main 是条形图的标题. names.arg 是在每个条下出现的名称的向量. col 用于向图中的条形提供颜色. barplot(H, xlab, ylab, m

  • R语言绘制带ErrorBar的分组条形图代码的分享

    目录 第一种实现方法:用aggregate计算数据 第二种实现方法:用dplyr包计算数据 笔者近期画了一张带error bar的分组条形图,将相关的代码分享一下. 感谢网友青山屋主的建议,提示笔者要严谨区分技术重复和生物学重复,所以笔者对文章做修改后重发.如果各位有任何建议,欢迎指正. 本文旨在给出一种利用R对生物学重复数据画带error bar的分组条形图的方法. 所用数据是模拟生成的:分成三个组,每个组进行了若干次生物学重复:测量的是3种基因的表达量.数据的部分内容如下: ## gene1

随机推荐