首页 > 科研绘图 > 怎么绘制带误差线的图?R语言ggplot2 & ggpubr来解决
2022
11-20

怎么绘制带误差线的图?R语言ggplot2 & ggpubr来解决

误差线通常用于统计或科学数据中,显示潜在的误差或相对于系列中每个数据标志的不确定程度。一般通用的误差线为标准差(平均偏差)或标准误差。

今天介绍两种使用R语言添加误差线的方法,分别是大家常用的ggplot2和基于它的ggpubr。

方法A

首先介绍大家比较熟悉的ggplot2

第一步:包的安装和数据准备

这里使用R中的范例数据集:ToothGrowth。它描述了维他命C对Guinea猪牙齿生长的影响。采取两种不同的处理方式(orange juice (OJ) or ascorbic acid (VC)),分别对应三种不同的剂量(Vitamin C (0.5, 1, and 2 mg))。

install.packages("ggplot2")

library(ggplot2)

df <- ToothGrowth

head(df)查看载入的数据,格式如下:

统计数据均值、标准差、标准误等利用aggregate()函数计算,为绘图做准备。

mean<-aggregate(df$len,by=list(df$supp,df$dose),FUN=mean) #计算均值

sd<-aggregate(df$len,by=list(df$supp,df$dose),FUN=sd) #计算标准差

N<-aggregate(df$len,by=list(df$supp,df$dose),FUN=length) #计算个数

data<-data.frame(mean,sd=sd$x,N=N$x)#合并数据框

colnames(data)=c("supp","dose","len","sd","N")

data$se <- data$sd / sqrt(data$N) #计算标准误

查看统计数据:

注:画图前将dose列的类型更改为factor型

data$dose =as.factor(data$dose)

这是因为如果dose是数值型向量将会作为连续型数据进行处理,而因子型变量则会被作为离散型数据进行处理。

第二步:画图

2.1标准差——基础形式

ggplot(data, aes(x=dose, y=len, fill=supp))+

geom_bar(position=position_dodge(), color="black",stat="identity",width=.6)+

geom_errorbar(aes(ymin=len-sd,ymax=len+sd),width=.2, position=position_dodge(.6))

2.2标准差——只保留上方误差棒

ggplot(data, aes(x=dose, y=len, fill=supp))+

geom_bar(position=position_dodge(), color="black",stat="identity",width=.6)+

geom_errorbar(aes(ymin=len, ymax=len+sd),width=.2,position=position_dodge(.6))

2.3标准误——基础形式

ggplot(data, aes(x=dose, y=len, fill=supp))+

geom_bar(position=position_dodge(), color="black",stat="identity",width=.6)+

geom_errorbar(aes(ymin=len-se, ymax=len+se),width=.2,position=position_dodge(.6))

还可以通过调节其他参数,绘制不同风格图片。

方法B

第二种方法ggpubr是基于ggplot2的可视化包,它的绘制风格更符合期刊对图片的要求。

第一步:包的安装和数据准备

install.packages("ggpubr")

#或者install the latest version from GitHub as follow:

if(!require(devtools))

install.packages("devtools")

devtools::install_github("kassambara/ggpubr")

library(ggpubr)

df <- ToothGrowth

第二步:画图

2.1标准差——基础形式

ggbarplot(df, x = "dose", y = "len", add = c("mean_sd", "jitter"),color = "supp", palette = "jco", position = position_dodge(1.0))

2.2标准差——只保留上方误差棒

ggbarplot(df, x = "dose", y = "len", add = c("mean_sd", "jitter"), error.plot = "upper_errorbar",color = "supp", palette = "jco", position = position_dodge(1.0))

2.3标准误——基础形式

ggbarplot(df, x = "dose", y = "len", add = c("mean_se", "jitter"),color = "supp", palette = "jco", position = position_dodge(1.0))

总结

两种方法都可以实现误差线图的绘制,ggpubr的优点在于无需对数据进行统计处理,整体来说更为方便。

撰稿:谭迪

转自:锐翌基因


最后编辑:
作者:萌小白
一个热爱网络的青年!

发布评论

表情