跨境派

跨境派

跨境派,专注跨境行业新闻资讯、跨境电商知识分享!

当前位置:首页 > 工具系统 > 其他工具 > R语言绘制箱线图(Box plot)

R语言绘制箱线图(Box plot)

时间:2024-03-26 10:26:23 来源:网络cs 作者:胡椒 栏目:其他工具 阅读:

标签: 绘制  语言 

今天要给大家分享的是如何用R语言绘制箱线图(Box plot)。

箱线图(Box plot)是在科研中出现频率非常高的一类图,它主要由5个部分组成:极小值、下四分位数、中位数、上四分位数、极大值。箱线图能够很好的展示数据的分布特征,可以通过箱线图判断一组数据是否呈对称分布,还能展示数据是否存在离群值等。

本次所使用的本次绘图所使用r包为R中内置boxplot包,无需重复安装加载。

一、简单箱线图绘制

第一步:导入数据

数据为R中自带数据集“Insect Sprays”,InsectSprays数据集为不同杀虫剂处理的农业试验单位中的昆虫计数。

data<-InsectSprays

数据展示:

该数据集一共包含72条数据,其中count表示不同农田中的昆虫数量;spray表示不同的农田,一共是6个农田,分别用A、B、C、D、E、F来表示。

第二步:箱线图绘制

Ⅰ. 简单箱线图绘制

## 绘制简单Boxplotboxplot(count ~ spray, #代表以count为x轴,以spray为y轴        data = data,  #指定数据集为data        col = "pink") #定制箱线图的颜色为粉色

图片展示:

图片解释:

以上图为例,箱线图的中黑色加粗的线即为中位数;箱体(粉红色部分)上边缘代表上四分位数,箱体下边缘代表下四分位数;最上面的一根线代表极大值,最下面的一根线代表极小值。图中的那两个圈圈就代表离群值。

如何通过箱线图判断判断数据是否服从对称分布呢?以上图为例:

A. 试验田A以及F昆虫计数的中位数相对于整个箱体来说是偏下的,中位数比较靠近下四分位数,也就是说数据的大部分在箱体的下端,那么它就是右偏分布

B. 同理,如果中位数恰好在箱体正中间,那么说明数据服从对称分布

C. 试验田B昆虫计数的中位数相对于整个箱体来说是偏上的,中位数比较靠近上四分位数,也就是说数据的大部分在箱体的上端,那么它就是左偏分布

(记住是左偏还是右偏的小窍门:曲线往哪边儿拖尾就是哪种偏态)

图片

 Ⅱ. 修改箱线图细节

#定制箱线图——修改箱线图细节boxplot(count ~ spray, #代表以count为x轴,以spray为y轴        data=data,        border=TRUE, #是否添加箱线图的边界线,默认为TRUE        col="skyblue", #修改箱线图整体的颜色        xlab="The type of spray", #添加X轴标签        ylab="Number of insects", #添加y轴标签        ylim=c(0,30), #修改Y轴刻度值        medcol="red", #修改箱线图中间的线(中位数)的颜色        medlwd=4, #修改箱线图中间的线(中位数)的粗细,数值越大线越粗        medlty=1 #修改箱线图中间的线(中位数)的类型,1代表实线,2代表虚线)

图片展示:

#题外话:给箱线图改个外观(科研中不太会用到,娱乐一下)boxplot(count ~ spray,         data = data,        notch = TRUE,         add = TRUE,         col = "skyblue")

 图片展示:

#对y轴取对数boxplot(decrease ~ treatment,         data = OrchardSprays,         col = "bisque",        log = "y" #表示取y轴的对数        )

 图片展示:

## horizontal=TRUE,水平转置x轴与y轴boxplot(decrease ~ treatment,         data = OrchardSprays,         col = "bisque",        log = "x", #表示取x轴的对数        horizontal=TRUE #水平转置x轴与y轴        )

 图片展示:

Ⅲ. 多组箱线图绘制

这一部分所使用的数据集依然是R中自带数据集“ToothGrowth”。该数据集记录了60只豚鼠在服用不同维生素C及不同剂量后牙齿生长的长度。其中len表示豚鼠牙齿长度;supp表示不同的维生素C类型,共有橙汁或抗坏血酸两种类型(分别记为OJ和VC);dose表示豚鼠接受的维生素C的剂量(milligrams/day)。每只动物通过橙汁或抗坏血酸两种递送方式中的一种,接受三种剂量水平(0.5、1和2毫克/天)中的一种。

数据展示:

 ①箱线图绘制

data<-ToothGrowthboxplot(len ~ dose, data = data,        boxwex = 0.25, #定制箱线图箱体的宽度        at = 1:3 - 0.1, #一共是三种不同的剂量,因此at=1:3,-0.1指定箱线图偏移(左偏)的位置(可以省略不要,那么箱线图图片整体位置居中)        subset = supp == "VC", #这里通过指定supp类型为VC/OJ         col = "yellow", #定制箱线图颜色        main = "Tooth Length", #添加箱线图标题/抬头        xlab = "Vitamin C dose mg", #添加x轴标签        ylab = "tooth length", #添加y轴标签        xlim = c(0.5, 3.5), #设置x轴范围        ylim = c(0, 35), #设置y轴范围        yaxs = "i" #在R中默认会画出增加4%的坐标轴,如果想画出正好是xlim或ylim的长度,可以使用 xaxs/yaxs="i"        )

图片展示:

 

②多组箱线图绘制:

boxplot(len ~ dose, data = data,         add = TRUE, #TRUE在上个图形的基础上叠加下一个图形,将两组箱线图放在一起的关键        boxwex = 0.25, at = 1:3 + 0.2, #设置箱线图位置,+0.2也就是向偏移0.2个单位        subset = supp == "OJ",         col = "orange")#添加图例legend(2, 9, c("Ascorbic acid", "Orange juice"),       fill = c("yellow", "orange"))#也可以参考以下代码,一步到位直接绘制两组箱线图boxplot(len ~ dose:supp, #因子*交互项,即给箱线图添加一个分组标准supp        data = data,        boxwex = 0.5, col = c("orange", "yellow"),        main = "Tooth Growth",        xlab = "dose mg",         ylab = "tooth length",        sep = " ", #设置分隔符        lex.order = TRUE, #TRUE表示按顺序排列x轴(按does大小排列箱线图)        ylim = c(0, 35), yaxs = "i")

 图片展示:

Reference:boxplot function - RDocumentation

 今天的分享到此结束。(欢迎我的另一个草稿箱——公众号:统计小菜椒)

本文链接:https://www.kjpai.cn/news/2024-03-26/148784.html,文章来源:网络cs,作者:胡椒,版权归作者所有,如需转载请注明来源和作者,否则将追究法律责任!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。

文章评论