神奇小工具丨ggplot绘图显著性添加工具---ggsignif
在数据分析过程中,常常遇到需要把组间的显著性添加到图形中,但是在ggplot2中实现起来略显麻烦,幸运的是,在这个世界上有很多无私的大神,早就为我们想到了这一点。
今天给大家介绍一款ggplot2的插件:
ggsignif 是发表在github上的开源包,专门用于在box plot上添加显著性标签。
https://github.com/const-ae/ggsignif
使用之前要进行安装:
安装稳定版本:
install.packages("ggsignif")
安装最新开发版本:
devtools::install_github("const-ae/ggsignif")
睁大你的眼睛,看一波炫酷的案例图:
以上图例来源于ggsignif在github主页上的示例图
在讲绘图之前,先介绍一点统计分析的知识,我们在做差异性分析的时候,一般情况首先会判断数据是否符合正态分布,在这选择适合的统计方法:
R函数 | 描述 |
t.test() | 比较两组(参数) |
wilcox.test() | 比较两组(非参数) |
aov()或anova() | 比较多组(参数) |
kruskal.test() | 比较多组(非参数) |
ggsignif主要的一个函数是geom_signif(),他的使用方法和ggplot2中其他的geom_***()一样,作为图层添加到图形中就可以,他的主要参数如下表:
参数 | 说明 |
comparisons | list,设置需要比较的组 |
test | 选择检验方法,t.test, wilcox.test |
test.args | 给test传入的参数 |
map_signif_level | bool值,如果为TRUE,显示方法为"***"=0.001, "**"=0.01, "*"=0.05 |
step_increase | 设置标注之间的距离 |
孙老湿举栗子
library(ggplot2)
library(ggthemr) #载入上期介绍的主题配置包
library(ggsignif) #载入ggsignif
我们使用iris数据集作为演示,iris数据集Species作为分类标签,Species有3个类别("versicolor"、"virginica"、"setosa"),用head(iris)查看数据集的前6行:
Species的三组两两分别作差异性检验,提前设定好配对分析的list:
compaired <- list(c("versicolor", "virginica"),
c("versicolor","setosa"),
c("virginica","setosa"))
绘制geom_boxplot():
ggthemr("flat")
p <- ggplot(iris, aes(Species, Sepal.Width, fill = Species)) +
geom_boxplot() +
ylim(1.5, 6.5) +
geom_signif(comparisons = compaired,
step_increase = 0.3,
map_signif_level = F,
test = wilcox.test)
p
绘制小提琴图geom_violin():
ggthemr("flat")
p <- ggplot(iris, aes(Species, Sepal.Width, fill = Species)) +
geom_violin() +
ylim(1.5, 6.5) +
geom_signif(comparisons = compaired,
step_increase = 0.5,
map_signif_level = F,
test = wilcox.test)
p
修改参数map_signif_level=TRUE:
ggthemr("flat")
p <- ggplot(iris, aes(Species, Sepal.Width, fill = Species)) +
geom_violin() +
ylim(1.5, 6.5) +
geom_signif(comparisons = compaired,
step_increase = 0.3,
map_signif_level = T,
test = wilcox.test)
p
本系列课程主要侧重于讲解图形原理,以及在R中的实现过程,并没有特意追求美观,故很多图的细节部分修饰有限,大家重点理解实现过程。
有任何问题,欢迎在文末留言讨论。
扫码关注,获取更多精彩内容
我
是
彩
蛋
关注公众号后:
回复文字:好好学习,收听喜马拉雅FM电台栏目《一分钟听懂NGS基础概念》,让生信分析不再遥不可及。
回复文字:果然科学,给你看另一篇好玩的文章。