R作图 显著性绘制工具-ggsignif

最近在逛R语言数据分析与可视化是发现了有个ggpubr包可以绘制箱线图的显著性标记,感觉蛮有用的,然后就在网上搜了下显著性标记相关资料,发现除了ggpubr包外,发现一个ggsignif包!查了下原来这个包是专门配套ggplot2来给图添加显著性标记的,所以收藏并使用了下

包的使用示例即说明可以参看Github链接:ggsignif

还有一个公众号也对这包的使用进行了介绍:神奇小工具丨ggplot绘图显著性添加工具—ggsignif

下面是我对这个包的初步使用

具体函数的参数使用可以看ggsignif包的pdf文档

先下载使用数据,这里就拿TCGA数据来练练手,当然不是常规的去官网下载数据啦,而是使用RTCGA包,然后利用RTCGA.mRNA包里的各个样本的表达数据,先加载会用到的包

library(RTCGA)
library(RTCGA.mRNA)
library(dplyr)
library(ggplot2)
library(ggsignif)

获取乳腺癌的表达谱数据,并挑取RCA1,BRCA2,TP53三个基因在各个样本中的表达数据作为测试数据

exprSet <- BRCA.mRNA %>% as_tibble()
data <- select(exprSet, BRCA1,BRCA2,TP53) %>% stack()
colnames(data) <- c("values", "sample")

绘制个箱线图瞧瞧

p <- ggplot(data, aes(x = sample, y = values)) +
  geom_boxplot() +
  theme_classic()
p

boxplot1

然后使用ggsignif包绘制有显著性标记的箱线图,先设定比较组,并选择差异分析的统计学方法,绘图

p <- ggplot(data, aes(x = sample, y = values)) +
  geom_boxplot() +
  theme_classic() +
  geom_signif(comparisons = compared_list, test = wilcox.test, step_increase = 0.2)
p

boxplot2

如果像一些图上并不是显示p值,而是显示***,那么可以再添加map_signif_level参数

p <- ggplot(data, aes(x = sample, y = values)) +
  geom_boxplot() +
  theme_classic() +
  geom_signif(comparisons = compared_list, test = wilcox.test, step_increase = 0.2, map_signif_level = T)
p

boxplot3

如果并不想标注p值,而是想标注认为设定的数字或者字符,那么设定annotation参数以及搭配其他一些定位参数,如下

p <- ggplot(data, aes(x = sample, y = values)) +
  geom_boxplot() +
  theme_classic() +
  geom_signif(annotations = c("First", "Second"), y_position = c(2.5, 3.5), xmin = c(1,2), xmax = c(2,3))
p

boxplot4

虽然网上介绍的ggsignif包都是对boxplot进行操作的,但是作者并没有说局限于箱线图(小提琴图)等,说明还支持其他ggplot2的图,所以我也对柱状图尝试了下

先生成一个测试数据框

df <- data.frame(state = rep(c("A", "B", "C", "D", "E"), 2),
             value = c(1:5,3:7),
             group = c(rep("one", 5), rep("two", 5))
             )

当然我们需要知道的是柱状图是不能求显著性的,但是还可以用来跟上图一样的人为标注以示说明,如下

p <- ggplot(df, aes(x = state, y = value, fill = group)) +
  geom_bar(stat = "identity", position = "dodge") +
  theme_classic() +
  geom_signif(annotations = c(0.001, "***"), y_position = c(4,5), xmin = c(0.75, 1.75), xmax = c(1.25, 2.25), 
              tip_length = c(c(0.2, 0.05),c(0.2, 0.05)), vjust = -1)
p

barplot

以上是对ggsignif包的简单尝试,这个ggplot2插件真心不错

本文出自于http://www.bioinfo-scrounger.com转载请注明出处