
导读
以前总是借助PS来为新鲜出炉的R图添加统计显著标识,但是现在可以不用了,因为
ggbubr
可以一站式解决,而且画的图堪比SCI级别。话不多说,撸起袖子搞起来
工作流程
包的下载,直接从CRAN镜像下载即可
install.packages("ggpubr")
library(ggpubr) #加载
数据准备及处理,如下图所示
- 这里准备了我自己截取的一小部分数据做例子,首先要有分组信息,个体信息不重要。但是这样的数据不适合ggplot2环境下作图,因为有两个变量需要作图,这里需要对数据进行转换一下,采用的是
reshape2
包的melt
函数

setwd("C:\\Users\\Administrator\\Desktop")#设置工作路径
test_df <- read.table("clipboard",header = T,check.names = F)#读取数据
#test_df[,2:3] <- log1p(test_df[,2:3])
#test_df[,2:3] <- scale(test_df[,2:3], center = TRUE, scale = TRUE)
library(reshape2)
work_df <- melt(test_df, id.vars = "Treament")
- 数据经过转换后成为了一个长矩阵,这样就可以通过ggplot2分析和作图了,这里的分组信息是Treatment,变量信息在variable中,变量对应的数值信息在value列中。

数据分析, 组间差异比较
library(ggpubr)
compare_means(value ~ Treament, data = work_df, group.by = "variable")
# A tibble: 2 x 9
# variable .y. group1 group2 p p.adj p.format p.signif method
# <fct> <chr> <chr> <chr> <dbl> <dbl> <chr> <chr> <chr>
#1 Hippurate value High Low 0.321 0.45 0.32 ns Wilcoxon
#2 Urate value High Low 0.224 0.45 0.22 ns Wilcoxon
采用的是默认的Wilcoxon组间差异检验,可以看到
Hippurate
和Urate
在两个分组之间差异均不显著
作图
尽管不显著,但是还是想看下数据的分布是如何的,那么这里将展示
boxplot
、barplot
和line
作图结果,以及如何添加显著性标识。
1 | boxplot
p <- ggboxplot(work_df, x = "variable", y = "value",
color = "Treament", palette = "jco",
add = "jitter") # palette可以按照期刊选择相应的配色,如"npg"等
p + stat_compare_means(aes(group = Treament), label = "p.signif")
# label = "p.signif"标识用星号或者''ns''等字符来表示显著性结果
ggsave("boxplot.tiff",width = 8,height = 8)

2 | barplot
p1 <- ggbarplot(work_df, x = "variable", y = "value", add = "mean_se",
color = "Treament", palette = "jco",
position = position_dodge(0.8))
p1 <- p1 + stat_compare_means(aes(group = Treament), label = "p.format", label.y = 180)
# label = "p.format"标识用P值来标识显著性结果,如下图所示
ggsave("barplot.tiff",width = 8,height = 8)

3 | 数据点一一对应的boxplot图
可惜可能是我数据的问题,没有做出来那种效果
p2 <- ggpaired(work_df, x = "Treament", y = "value",
color = "Treament", palette = "jco", facet.by = "variable" ,
line.color = "gray", line.size = 0.4, short.panel.labs = FALSE)
p2 <- p2 + stat_compare_means(aes(group = Treament), label = "p.format", label.y = 200)


4 | line图
p3 <- ggline(work_df, x = "variable", y = "value", add = "mean_se",
color = "Treament", palette = "jco",
position = position_dodge(0.8))
p3 <- p3 + stat_compare_means(aes(group = Treament), label = "p.format", label.y = 180)

结语
怎么样,是不是很简单也很好看,当然我展示的只是基本图形,想要让你的图像更加色彩斑斓,可以有很多参数可以控制和调节。
参考
[1] https://www.r-bloggers.com/add-p-values-and-significance-levels-to-ggplots/
网友评论