本节,介绍一下箱线图实现显著性添加的方法,类似这种:

单因素二水平T检验箱线图可视化


单因素三水平T检验箱线图可视化

单因素三水平柱形图

单因素三水平折线图

二因素柱形图

二因素折线图

1. 单因素二水平

这种试验,比如有两个品种,株高的差异,每个品种调查了10株,就构成了这样的试验数据。

模拟数据:

set.seed(123)
y1 = rnorm(10) + 5
y2 = rnorm(10) + 15
dd = data.frame(Group = rep(c("A","B"),each=10),y = c(y1,y2))
dd
str(dd)
dd$Group = as.factor(dd$Group)

数据:

> ddGroup         y
1      A  4.439524
2      A  4.769823
3      A  6.558708
4      A  5.070508
5      A  5.129288
6      A  6.715065
7      A  5.460916
8      A  3.734939
9      A  4.313147
10     A  4.554338
11     B 16.224082
12     B 15.359814
13     B 15.400771
14     B 15.110683
15     B 14.444159
16     B 16.786913
17     B 15.497850
18     B 13.033383
19     B 15.701356
20     B 14.527209

这里,使用的是ggpubr包进行绘图:

1.1 绘制箱线图

library(ggplot2)
library(ggpubr)
ggboxplot(dd,x = "Group",y = "y")

1.2 箱线图添加不同颜色

ggboxplot(dd,x = "Group",y = "y",color = "Group")

1.3 箱线图添加散点图

ggboxplot(dd,x = "Group",y = "y",color = "Group",add = "jitter")

1.4 箱线图+散点图+显著性水平

这里,默认的统计方法是非参数统计Wilcoxon,如果想用t.test,见下面操作

ggboxplot(dd,x = "Group",y = "y",color = "Group",add = "jitter") + stat_compare_means()

1.5 用t.test作为统计方法


ggboxplot(dd,x = "Group",y = "y",color = "Group",add = "jitter") + stat_compare_means(method = "t.test")

1.6 直接输出显著性


ggboxplot(dd,x = "Group",y = "y",color = "Group",add = "jitter") + stat_compare_means(method = "t.test",label = "p.signif")

2. 单因素三水平

二个水平可以用T检验,三个水平或者多个水平的数据,如何检验呢?

模拟数据:

# 构建三个水平 ANOVA
set.seed(123)
y1 = rnorm(10) + 5
y2 = rnorm(10) + 15
y3 = rnorm(10) + 15dd = data.frame(Group = rep(c("A","B","C"),each=10),y = c(y1,y2,y3))
dd
str(dd)
dd$Group = as.factor(dd$Group)

数据如下:

> ddGroup         y
1      A  4.439524
2      A  4.769823
3      A  6.558708
4      A  5.070508
5      A  5.129288
6      A  6.715065
7      A  5.460916
8      A  3.734939
9      A  4.313147
10     A  4.554338
11     B 16.224082
12     B 15.359814
13     B 15.400771
14     B 15.110683
15     B 14.444159
16     B 16.786913
17     B 15.497850
18     B 13.033383
19     B 15.701356
20     B 14.527209
21     C 13.932176
22     C 14.782025
23     C 13.973996
24     C 14.271109
25     C 14.374961
26     C 13.313307
27     C 15.837787
28     C 15.153373
29     C 13.861863
30     C 16.253815

2.1 箱线图+散点图

p = ggboxplot(dd,x = "Group",y = "y",color = "Group",add = "jitter")
p

2.2 箱线图+散点图+显著性

p + stat_compare_means(method = "anova")

2.3 两两之间显著性绘制

my_comparisons = list( c("A", "B"), c("A", "C"), c("B", "C") )
p + stat_compare_means(comparisons = my_comparisons,# label = "p.signif",method = "t.test")

2.4 显示显著性

p + stat_compare_means(comparisons = my_comparisons,label = "p.signif",method = "t.test")

3. 两因素数据

模拟数据:

# 两个因素的数据
set.seed(123)
y1 = rnorm(10) + 5
y2 = rnorm(10) + 8
y3 = rnorm(10) + 7
y4 = rnorm(10) + 15
y5 = rnorm(10) + 18
y6 = rnorm(10) + 17dd = data.frame(Group1 = rep(c("A","B","C"),each=10),Group2 = rep(c("X","Y"),each=30),y = c(y1,y2,y3,y4,y5,y6))
dd
str(dd)
dd$Group1 = as.factor(dd$Group1)
dd$Group2 = as.factor(dd$Group2)
str(dd)

数据预览:

> ddGroup1 Group2         y
1       A      X  4.439524
2       A      X  4.769823
3       A      X  6.558708
4       A      X  5.070508
5       A      X  5.129288
6       A      X  6.715065
7       A      X  5.460916
8       A      X  3.734939
9       A      X  4.313147
10      A      X  4.554338
11      B      X  9.224082
12      B      X  8.359814
13      B      X  8.400771
14      B      X  8.110683
15      B      X  7.444159
16      B      X  9.786913
17      B      X  8.497850
18      B      X  6.033383
19      B      X  8.701356
20      B      X  7.527209
21      C      X  5.932176
22      C      X  6.782025
23      C      X  5.973996
24      C      X  6.271109
25      C      X  6.374961
26      C      X  5.313307
27      C      X  7.837787
28      C      X  7.153373
29      C      X  5.861863
30      C      X  8.253815
31      A      Y 15.426464
32      A      Y 14.704929
33      A      Y 15.895126
34      A      Y 15.878133
35      A      Y 15.821581
36      A      Y 15.688640
37      A      Y 15.553918
38      A      Y 14.938088
39      A      Y 14.694037
40      A      Y 14.619529
41      B      Y 17.305293
42      B      Y 17.792083
43      B      Y 16.734604
44      B      Y 20.168956
45      B      Y 19.207962
46      B      Y 16.876891
47      B      Y 17.597115
48      B      Y 17.533345
49      B      Y 18.779965
50      B      Y 17.916631
51      C      Y 17.253319
52      C      Y 16.971453
53      C      Y 16.957130
54      C      Y 18.368602
55      C      Y 16.774229
56      C      Y 18.516471
57      C      Y 15.451247
58      C      Y 17.584614
59      C      Y 17.123854
60      C      Y 17.215942

3.1 绘制分组箱线图

p = ggboxplot(dd,x = "Group1",y="y",color = "Group2",add = "jitter")
p

3.2 增加P值

p + stat_compare_means(aes(group = Group2),method = "t.test")

3.3 修改为显著性结果

p + stat_compare_means(aes(group = Group2),method = "t.test",label = "p.signif")

3.4 将分组数据分开绘制

p = ggboxplot(dd,x = "Group2",y="y",color = "Group1",add = "jitter",facet.by = "Group1")
p

3.5 分组显示统计检验

p + stat_compare_means(method = "t.test")

3.6 分组显示显著性结果

p + stat_compare_means(method = "t.test",label = "p.signif",label.y = 17)

4. 单因素直方图绘制

直方图+标准误,之前用ggplot2需要很长的代码,这里有更好的方案。

4.1 直方图+标准误

p = ggbarplot(dd,x = "Group1",y = "y",add = "mean_se",color = "Group1")
p

4.2 直方图+标准误+显著性

p + stat_compare_means(method = "anova",,label.y = 15)+ stat_compare_means(comparisons = my_comparisons)

5. 单因素折线图绘制

5.1 折线图+标准误

p = ggline(dd,x = "Group1",y = "y",add = "mean_se")
p

5.2 折线图+标准误+显著性

p + stat_compare_means(method = "anova",,label.y = 15)+ stat_compare_means(comparisons = my_comparisons)

6. 二因素直方图绘制

6.1 直方图+标准误

p = ggbarplot(dd,x = "Group1",y = "y",add = "mean_se",color = "Group2", position = position_dodge(0.8))
p

6.2 直方图+标准误+显著性

p + stat_compare_means(aes(group=Group2), label = "p.signif")

7. 二因素折线图绘制

7.1 折线图+标准误

p = ggline(dd,x = "Group1",y = "y",add = "mean_se",color = "Group2", position = position_dodge(0.8))
p

7.2 折线图+标准误+显著性

p + stat_compare_means(aes(group=Group2), label = "p.signif")

8. 代码汇总


# > 欢迎关注我的公众号:`育种数据分析之放飞自我`。主要分享R语言,Python,育种数据分析,生物统计,数量遗传学,混合线性模型,GWAS和GS相关的知识。# 构建两个水平 T-test
set.seed(123)
y1 = rnorm(10) + 5
y2 = rnorm(10) + 15
dd = data.frame(Group = rep(c("A","B"),each=10),y = c(y1,y2))
dd
str(dd)
dd$Group = as.factor(dd$Group)library(ggplot2)
library(ggpubr)
ggboxplot(dd,x = "Group",y = "y")
ggboxplot(dd,x = "Group",y = "y",color = "Group")
ggboxplot(dd,x = "Group",y = "y",color = "Group",add = "jitter")
ggboxplot(dd,x = "Group",y = "y",color = "Group",add = "jitter") + stat_compare_means()ggboxplot(dd,x = "Group",y = "y",color = "Group",add = "jitter") + stat_compare_means(method = "t.test")ggboxplot(dd,x = "Group",y = "y",color = "Group",add = "jitter") + stat_compare_means(method = "t.test",label = "p.signif")# 构建三个水平 ANOVA
set.seed(123)
y1 = rnorm(10) + 5
y2 = rnorm(10) + 15
y3 = rnorm(10) + 15dd = data.frame(Group = rep(c("A","B","C"),each=10),y = c(y1,y2,y3))
dd
str(dd)
dd$Group = as.factor(dd$Group)p = ggboxplot(dd,x = "Group",y = "y",color = "Group",add = "jitter")
p
p + stat_compare_means(method = "anova")# Perorm pairwise comparisons
# compare_means(y ~ Group,  data = dd,method = "anova")my_comparisons = list( c("A", "B"), c("A", "C"), c("B", "C") )
p + stat_compare_means(comparisons = my_comparisons,# label = "p.signif",method = "t.test")p + stat_compare_means(comparisons = my_comparisons,label = "p.signif",method = "t.test")# 两个因素的数据
set.seed(123)
y1 = rnorm(10) + 5
y2 = rnorm(10) + 8
y3 = rnorm(10) + 7
y4 = rnorm(10) + 15
y5 = rnorm(10) + 18
y6 = rnorm(10) + 17dd = data.frame(Group1 = rep(c("A","B","C"),each=10),Group2 = rep(c("X","Y"),each=30),y = c(y1,y2,y3,y4,y5,y6))
dd
str(dd)
dd$Group1 = as.factor(dd$Group1)
dd$Group2 = as.factor(dd$Group2)
str(dd)## 分组查看
p = ggboxplot(dd,x = "Group1",y="y",color = "Group2",add = "jitter")
p
p + stat_compare_means(aes(group = Group2),method = "t.test")
p + stat_compare_means(aes(group = Group2),method = "t.test",label = "p.signif")## 分组查看
p = ggboxplot(dd,x = "Group2",y="y",color = "Group1",add = "jitter",facet.by = "Group1")
p
p + stat_compare_means(method = "t.test")
p + stat_compare_means(method = "t.test",label = "p.signif",label.y = 17)# 单分组
# 三水平直方图
p = ggbarplot(dd,x = "Group1",y = "y",add = "mean_se",color = "Group1")
p
p + stat_compare_means(method = "anova",,label.y = 15)+ stat_compare_means(comparisons = my_comparisons)# 有误差的折线图
p = ggline(dd,x = "Group1",y = "y",add = "mean_se")
p
p + stat_compare_means(method = "anova",,label.y = 15)+ stat_compare_means(comparisons = my_comparisons)# 二分组
p = ggbarplot(dd,x = "Group1",y = "y",add = "mean_se",color = "Group2", position = position_dodge(0.8))
p
p + stat_compare_means(aes(group=Group2), label = "p.signif")# 有误差的折线图
p = ggline(dd,x = "Group1",y = "y",add = "mean_se",color = "Group2", position = position_dodge(0.8))
p
p + stat_compare_means(aes(group=Group2), label = "p.signif")

欢迎关注我的公众号:育种数据分析之放飞自我。主要分享R语言,Python,育种数据分析,生物统计,数量遗传学,混合线性模型,GWAS和GS相关的知识。

R语言箱线图添加显著性--不同水平实现方法相关推荐

  1. R语言绘制线图(line)实战

    R语言绘制线图(line)实战 目录 R语言绘制线图(line)实战 #仿真数据 #基础线图

  2. R 学习 - 箱线图

    箱线图 箱线图是能同时反映数据统计量和整体分布,又很漂亮的展示图.在2014年的Nature Method上有2篇Correspondence论述了使用箱线图的好处和一个在线绘制箱线图的工具.就这样都 ...

  3. R语言箱型图 boxplot

    boxplot简介 boxplot称为箱型图,又叫做盒状图,胡须图.是用来表示数值类型数据分布状况的统计图.它能显示出一组数据的最大值.最小值.中位数.及上下四分位数. 四分位数百度百科 第一四分位数 ...

  4. R语言学习 - 热图简化

    前面推出过热图绘制和热图美化,现在来一个函数绘制热图的简化方式.文后更有不用写代码的在线工具可用. R语言 - 基础概念和矩阵操作 R语言 - 热图简化 R语言 - 热图绘制 (heatmap) R语 ...

  5. R语言学习 - 热图美化 (数值标准化和调整坐标轴顺序)

    生物信息学习的正确姿势 NGS系列文章包括NGS基础.在线绘图.转录组分析 (Nature重磅综述|关于RNA-seq你想知道的全在这).ChIP-seq分析 (ChIP-seq基本分析流程).单细胞 ...

  6. R语言基础图形绘制——箱线图

    R语言绘制箱线图 简介 1. 基础函数-`boxplot()` 2. `ggplot()`函数 简介 箱线图主要是通过四分位数描述数据分布,通过最大值,上四分位数,中位数,下四分位数,最小值五处位置描 ...

  7. R语言数据可视化-箱线图

    一.概述 箱线图(bar plot)又叫箱须图(box-whisker plot)在医学科技论文中经常有用到,用于展示数据的大致分布特征,也用于探索异常值和离群点.平行排列的箱线图可以用于比较在某个分 ...

  8. R 多变量数据预处理_R语言数据可视化之数据分布图(直方图、密度曲线、箱线图、等高线、2D密度图)...

    作者:穆晨 来源:https://www.cnblogs.com/muchen/p/5310732.html 阅读目录 数据分布图简介 绘制基本直方图 基于分组的直方图 绘制密度曲线 绘制基本箱线图 ...

  9. R语言数据可视化之数据分布图(直方图、密度曲线、箱线图、等高线、2D密度图)...

    作者:穆晨 来源:https://www.cnblogs.com/muchen/p/5310732.html 阅读目录 数据分布图简介 绘制基本直方图 基于分组的直方图 绘制密度曲线 绘制基本箱线图 ...

最新文章

  1. maven 学习笔记(一)eclipse+android+maven
  2. Oracle-Oracle数据库结构
  3. ubuntu19 安装git_如何在Ubuntu 20.04上安装Git
  4. 学习使用 Manifest
  5. Spring boot系列--redis使用之1
  6. python算法的基本原理_kNN算法基本原理与Python代码实践
  7. 算法移植优化(二)android gpuimage使用
  8. 你不一定知道的vb6(2)
  9. 给eclipse安装反编译
  10. PHPnow中ZendDebugger与ZendOptimizer 共存
  11. Nginx缓存配置以及nginx ngx_cache_purge模块的使用
  12. 除了快,5G 有哪些关键技术?
  13. 为什么手机网速太慢_为什么苹果手机的网速变慢了_苹果手机上网速度慢的解决方法-系统城...
  14. 你应该怎么样活着才有意思
  15. 计算机科学概论第三版重点,计算机科学概论重点.doc
  16. 考研数学 第6讲 中值定理
  17. 空间分辨率、频谱分辨率、辐射计量分辨率、时间分辨率。
  18. 响应Response
  19. 机器学习之乳腺癌预测
  20. 谈谈 COS 中国自主知识产权智能手机操作系统

热门文章

  1. 关于深度态势感知问题的思考
  2. Win10任务管理器不显示GPU的解决方法
  3. python 连接数据库并批量生成数据
  4. 保暖防风又抗冻 春节出游当然要选头戴式耳机
  5. 磁性开关 —— 干簧管的原理和应用
  6. 剑指offter27. 数值的整数次方-java实现
  7. 数字人民币试点范围扩容;美国科技巨头市值蒸发超5万亿美元;蔡崇信再次出售阿里巴巴股票 | 每日大事件...
  8. 关于f(tx,ty)=t^nf(x,y)的学习
  9. 垃圾渗滤液处理常用的组合工艺
  10. Vmware centos7 linux 安装scala