在数据分析过程中,常常遇到需要把组间的显著性添加到图形中,但是在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"),
绘制geom_boxplot():
ggthemr("flat")
绘制小提琴图geom_violin():
ggthemr("flat")
修改参数map_signif_level=TRUE:
ggthemr("flat")
本系列课程主要侧重于讲解图形原理,以及在R中的实现过程,并没有特意追求美观,故很多图的细节部分修饰有限,大家重点理解实现过程。
欢迎持续关注我们的这个画图系列内容。
有任何问题,欢迎在文末留言讨论。