分享

数据挖掘专题 | 使用ggpubr绘制箱式图(基础篇)

 生物_医药_科研 2018-12-28


'ggpubr' provides some easy-to-use functions for creating and customizing 'ggplot2'- based publication ready plots.

https://github.com/kassambara/ggpubr

ggpubr包中提供了ggboxplot(箱式图)、ggviolin(小提琴图)、ggbarplot(条形图)等一些列基于ggplot2的绘图方法,在简化ggplot2基础绘图的同时也添加了一些新的功能,比如可以便捷的添加显著性信息!

首先,安装加载ggpubr包,并基于ToothGrowth数据集进行测试:

  1. # 安装

  2. p_load(devtools)

  3. install_github('kassambara/ggpubr')

  4. p_load(ggpubr)


  5. # 测试数据

  6. data(ToothGrowth)

在进行差异表达分析时,常会完成一个相应的可视化展示。其中一种情况,就是对于目标因子在两组样本中的表达差异进行可视化,如箱式图。在箱式图中可能会再标明显著性p值,其实以添加文本的方式即可,只不过对于需要多个标记时,其复杂度也会增加,而ggpubr中则提供了相对简单的操作方法!

ggpubr中有两个比较关键的函数:

compare_means(): 统计分析

stat_compare_means(): 自行完成统计分析,并在图中添加显著性信息

1、两组间差异表达分析

  1. compare_means(len~supp, data = ToothGrowth)

可见,对于ToothGrowth中的supp列定义的OJ和VC两组,其len的差异显著性为p=0.0645,而两组间差异分析默认Wilcoxon test

对应的绘图

  1. ggboxplot(ToothGrowth, x = 'supp', y = 'len', color = 'supp',

  2. palette = 'jco', add = 'jitter') + stat_compare_means()

stat_compare_means()中也提供了T检验,直接在其中设置method参数即可。而其显著性标签的位置及显示类型也是可以更改的。如下,使用T检验进行组间差异分析、并将显著性p值转换为*标记(参数label = 'p.signif'),标示在图中的(1.5, 40)位置:

  1. ggboxplot(ToothGrowth, x = 'supp', y = 'len', color = 'supp',

  2. palette = 'jco', add = 'jitter') + stat_compare_means(method = 't.test', label = 'p.signif', label.x = 1.5, label.y = 40)

这里,ns表示非显著的,其他显著性显示的对应关系如下:

'n': p > 0.05; '*': p <= 0.05;="">*': p <= 0.01;="">*': p <= 0.001;="" '****':="" p=""><=>

如果两组样本是配对且个数一致,例如癌和癌旁样本,则可以使用配对的差异表达分析,将参数paired设置为TRUE即可,如下使用配对的T检验

  1. compare_means(len~supp, data = ToothGrowth, method = 't.test', paired = TRUE)

此时可见组间差异具有显著性了(p = 0.00255),对于绘图,可以使用上示的 ggboxplot,也可以使用更针对性的 ggpaired,如下,此处使用label = 'p.format'参数以显示数值型的p值,使用palette = 'lancet'重新配色:

  1. ggpaired(ToothGrowth, x = 'supp', y = 'len', color = 'supp', line.color = 'gray',

  2. line.size = 0.4, palette = 'lancet') + stat_compare_means(method = 't.test', paired = TRUE, label = 'p.format', label.x = 1.35, label.y = 40)

2、多组间差异表达分析

此处使用的分组为ToothGrowth中的dose列(组别为0.5、1、2),默认的多组间差异分析方法是Kruskal-Wallis,同样可以使用method参数设置为anova:

  1. compare_means(len~dose, data = ToothGrowth, method = 'anova')

对于绘图,可以指定标注哪些组间的差异分析显著性,如下:

  1. my_comparisons = list(c('0.5', '1'), c('1', '2'))

  2. ggboxplot(ToothGrowth, x = 'dose', y = 'len', color = 'dose', palette = 'lancet')+

  3. stat_compare_means(comparisons = my_comparisons) +  # 子集p值

  4. stat_compare_means(method = 'anova', label.x = 1.7, label.y = 45)  # 整体的p值

需要注意的是:

1、对于其中的两组间差异分析,默认使用的仍然是Wilcoxon test检验,可以使用method参数设置为T检验

2、如果是有参考组(其他组均与参考组差异比较),可以直接使用ref.group参数设置参考组

  1. ggboxplot(ToothGrowth, x = 'dose', y = 'len', color = 'dose', palette = 'lancet') +

  2. stat_compare_means(method = 't.test', ref.group = '0.5', label = 'p.signif')

可见,在该例中如果不设定子集p值的label.y位置的话,会统一标在最高的y位置!

便捷以牺牲部分个性化为代价

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多