前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >绘制带显著性比较的bar图

绘制带显著性比较的bar图

原创
作者头像
爱学习的小明明
修改2020-09-27 11:30:29
4K0
修改2020-09-27 11:30:29
举报
文章被收录于专栏:R语言学习R语言学习

概述:本文介绍如何轻松地为ggplot图形添加P值和显著性水平:

  • 比较两组或多组的均值
  • 自动地将P值和显著性水平添加到ggplot图形中,如箱形图,点图,条形图和折线图等

使用工具: R语言中的ggplot2包和ggpubr包

均值比较的方法

均值比较的常见方法:

方法

R实现函数

描述

T-test

t.test()

比较两组(参数检验)

Wilcoxon test

wilcox.test()

比较两组(非参数检验)

ANOVA

aov()或anova()

比较多组(参数检验)

Kruskal-Wallis

kruskal.test()

比较多组(非参数检验)

用于添加P值的R函数

介绍两个ggpubr包中的函数

  • compare_means():用于执行均值比较
  • stat_compare_means():用于在ggplot图形中自动添加P值和显著性水平

compare_means()

两样本间的比较

df<-ToothGrowth

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

geom_boxplot(position=position_dodge(),width=0.5)+

geom_jitter(width = 0.2)+

scale_color_manual(c("red","blue"))+

stat_compare_means(method="t.test",paired=F,aes(label=..p.signif..),label.x=1.5,label.y = 30) #label指定显示计算出的显著性标签,这里为ns

#labe.x和label.y指定ns的坐标轴位置

多样本之间的比较

关键在于构建比对组信息my_com<-list(c("0.5","1"),c("1","2"),c("0.5","2")) ,然后指定comparison

df<-ToothGrowth

df$dose<-as.factor(df$dose)

compare_means(len~dose,data=df,method="anova")

my_com<-list(c("0.5","1"),c("1","2"),c("0.5","2")) #构建比对信息

#compare_means(len~dose,data=df) #如果由大于2组的样本,默认会用wilcox.test进行两两比较

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

geom_boxplot(position=position_dodge(),width=0.5)+

geom_jitter(width = 0.2)+

scale_color_manual(c("red","blue","yellow"))+

stat_compare_means(comparisons=my_com,method="t.test",paired=F,aes(label=..p.signif..))+ #label指定显示计算出的显著性标签,这里为ns

#stat_compare_means(comparisons=my_com,method="t.test",paired=F,aes(label=..p.signif..),label.y=c(29,35,40))+

#labe.x和label.y指定ns的坐标轴位置 label=..p.value将会显示P值

#label.y=c()有多组时可以分别指定位置

stat_compare_means(label.y=50)#显示总体P值

#stat_compare_means(label = "p.signif", method = "t.test",

ref.group = "0.5") #设置参考组,每一个组和和ref组比较

多个分组变量

除了dose分组,还有supp分组,这种由2个分组因子的数据可以用以下方法进行比较

compare_means(len ~ supp, data = df, group.by = "dose")

结果给出了不同dose下的不同supp比较

dose .y. group1 group2 p p.adj p.format p.signif method

<fct> <chr> <chr> <chr> <dbl> <dbl> <chr> <chr> <chr>

1 0.5 len OJ VC 0.0232 0.046 0.023 * Wilcoxon

2 1 len OJ VC 0.00403 0.012 0.004 ** Wilcoxon

3 2 len OJ VC 1 1 1.000 ns Wilcoxon

多面板展示多组数据

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

geom_boxplot(position=position_dodge(),width=0.5)+

geom_jitter(width = 0.2)+

scale_color_manual(c("red","blue"))+

facet_wrap(.~dose)+

stat_compare_means(label = "..p.signif..")

pare_means(len ~ supp,data=df,method="t.test",paired=F) #hide.na=T可以隐藏ns

也可以在一个面板中展示

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

geom_boxplot(position=position_dodge(),width=0.5)+

geom_jitter(width = 0.2)+

scale_color_manual(c("red","blue"))+

stat_compare_means(label = "..p.signif..",)

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 均值比较的方法
  • 用于添加P值的R函数
    • compare_means()
    • 两样本间的比较
    • 多样本之间的比较
    • 多个分组变量
    • 多面板展示多组数据
    • 也可以在一个面板中展示
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
    http://www.vxiaotou.com