专栏名称: 生信修炼手册
记录自己在生信工作中的点滴积累,将自己的想法和观点和大家分享。内容来源于实践,干货满满!
目录
相关文章推荐
51好读  ›  专栏  ›  生信修炼手册

多组差异分析的可视化,这样做最省心!

生信修炼手册  · 公众号  ·  · 2022-05-18 20:29

正文

请到「今天看啥」查看全文


欢迎关注”生信修炼手册”!

下图是来自文献中的一个示例图,展示了不同亚型之间risk score值的差异分析结果

从图形的主题可以看出,这是一幅基于ggplot2绘制的图片,但是如果完全基于ggplot2的基础函数的话,我们需要手动绘制组间比较的连线,计算对应的坐标并添加p值,虽然也可以实现,但不免太过繁琐。

想要更加便利的展示组间差异的结果,可以使用ggpubr这个R包。这是一个基于ggplot2的拓展包,体用了丰富的可视化功能,差异标记的可视化仅仅是其功能之一。

首先来看下其基本用法,代码如下

> library(ggpubr)载入需要的程辑包:ggplot2Want to understand how all the pieces fit together? Read R for DataScience: https://r4ds.had.co.nz/> data("ToothGrowth")> df > head(df, 4)   len supp dose1  4.2   VC  0.52 11.5   VC  0.53  7.3   VC  0.54  5.8   VC  0.5> ggviolin(df, x = "dose", y = "len", fill = "dose",add = "boxplot", add.params = list(fill = "white"))

ggviolin函数提供了小提琴图的可视化功能,通过add=boxplot在小提琴图的基础上添加了箱体图,效果图如下

接下来添加差异分析的p值, 代码如下

> ggviolin(+   df, x = "dose", y = "len",+   fill = "dose",+   add = "boxplot",+   add.params = list(fill = "white")) ++ stat_compare_means()

stat_compare_means函数添加差异分析的p值,默认参数的情况下,添加组间kw检验的结果,效果图如下

也可以手动指定需要标记的分组,代码如下

> ggviolin(+   df, x = "dose", y = "len",+   fill = "dose",+   add = "boxplot",+   add.params = list(fill = "white")) ++ stat_compare_means(comparisons = list(c("0.5", "1")))

程序会自动计算坐标,标记p值,效果图如下

需要注意的是,当涉及到多组间的两两比较时,写法上比较特殊,对于3组间的两两比较,我们先看下每次指定一组差异分析的情况,代码如下

> ggviolin(+   df, x = "dose", y = "len",+   fill = "dose",+   add = "boxplot",+   add.params = list(fill = "white")) ++ stat_compare_means(comparisons = list(c("0.5", "1"))) ++ stat_compare_means(comparisons = list(c("1", "2"))) ++ stat_compare_means(comparisons = list(c("0.5", "2")))

效果图如下

可以看到,程序没有自动化的计算3组p值的位置,导致重叠了,为了避免这种情况,我们需要下列这种写法

> ggviolin(+   df, x = "dose", y = "len",+   fill = "dose",+   add = "boxplot",+   add.params = list(fill = "white")) ++ stat_compare_means(comparisons = list( c("0.5", "1"), c("1", "2"), c("0.5", "2") ))

需要把3组差异分组包含在一个list中,这样程序就会自动计算标记p值的位置,将3组p值自动化的区分开,效果图如下

除了直接标记p值外,也支持用星号代替,将代码如下

> ggviolin(+   df, x = "dose", y = "len",+   fill = "dose",+   add = "boxplot",+   add.params = list(fill = "white")) ++ stat_compare_means(+   label = "p.signif",+   comparisons = list( c("0.5", "1"), c("1", "2"), c("0.5", "2"))+ )

效果图如下

最后,来看一个官网的示例,看下以上所有参数组合使用的例子,代码如下

> comparisons c("0.5", "1"), c("1", "2"), c("0.5", "2") )> ggviolin(+   df, x = "dose", y = "len", fill = "dose",+   palette = c("#00AFBB", "#E7B800", "#FC4E07"),+   add = "boxplot", add.params = list(fill = "white")) ++   stat_compare_means(comparisons = my_comparisons, label = "p.signif") ++   stat_compare_means(label.y = 50)

效果图如下

掌握了以上用法,绘制文章开头的那张图片就不在是难事了。

·end·
—如果喜欢,快分享给你的朋友们吧—

原创不易,欢迎收藏,点赞,转发!生信知识浩瀚如海,在生信学习的道路上,让我们一起并肩作战!

本公众号深耕耘生信领域多年,具有丰富的数据分析经验,致力于提供真正有价值的数据分析服务,擅长个性化分析,欢迎有需要的老师和同学前来咨询。
更多精彩
写在最后
转发本文至朋友圈,后台私信截图即可 加入生信交流群,和小伙伴一起学习交流。

扫描下方二维码,关注我们,解锁更多精彩内容!

一个只分享干货的

生信 公众号








请到「今天看啥」查看全文