首页 > 科研绘图 > 朋友圈最火热的“火山图”(带R代码分享)
2022
12-01

朋友圈最火热的“火山图”(带R代码分享)

暑假到了,在这个火热的夏日,还有比一张美丽的文章主图更能让我们充满激情和力量吗?在这组学撑起生物信息学半边天的时代,火山图,在转录组、蛋白组、代谢组等多种组学数据中,都占有举足轻重的地位。

那么,什么是火山图(Volcano Plot)。正如名称所描述,火山图的图形非常像火山喷发的形状。火山图通常用来展示差异表达的基因,常常出现在芯片、转录组、蛋白组、代谢组等组学检测技术的结果中,并且通常伴随热图一起出现。

火山图是散点图的一种展现形式。以实验组和对照组转录组数据为例,一张完美的火山图,通常由几个部分组成,显著上调差异表达基因,显著下调差异表达基因。一般来说, x 轴为实验组基因表达量比上对照组基因表达量的倍数差异,而 y 轴则为实验组比对照组之后的 p 值或者校正后的 p 值。火山图上,一个点代表一个基因,而颜色则代表他们是显著上调还是显著下调。

好了,基础知识就介绍到这里,下面让我们来看如何绘制一张完美的火山图。

首先,让我们先看一下数据。我们的数据使用的是 RNAseq 表达谱计算出来的差异基因,差异基因的计算方法为 limma 。在 RNAseq 分析中,使用较多的计算差异基因的软件为 DESeq2 和 limma 。差异分析结果文件我们存储在 DEGdata.txt 文件中,使用 excel 打开改文件,一共有 7 列数据:第一列 Symbol 为基因名;第二列 logFC 为实验组比上对照组的倍数差异,其中大于 0 为实验组上调基因,小于 0 为实验组下调基因;第三列 AveExpr 为该基因在所有样本中表达量均值;第四列 t 为 t 统计量;第五列 P.value 为实验组比对照组的 P 值;第六列 adj.p.value 为校正后的 P 值,因为基因和基因并不是相互独立的,所以我们需要对 P 值进行校正来降低结果的假阳性,常用的校正方法为 FDR 校正;第七列 B 为 B 统计量。

然后,让我们打开 Rstudio ,开始安装一些必须的包,这里推荐一款 ggplot2 一键绘图神器, ggpubr (http://www.sthda.com/english/articles/24-ggpubr-publication-ready-plots/) 。这个包是在 ggplot2 的基础上,整合了很多绘图函数,对用户十分友好。另外需要用到的一个包围 ggthemes ,这个包整合了很多 ggplot2 的绘图主题,对科研人员十分友好。

在包安装完成之后,我们将它们加载到 R 环境中。接下来就是读取我们差异基因的文件了。差异基因文件我们存储在 DEGdata.txt 文件中。

在 R中查看文件前 6 行。

这 7 列文件之前已经介绍过,我们画火山图,只需要其中的 logFC 和 adj.P.val 就可以了。在绘图之前,我们需要对 adj.P.val 进行转换,将它的值变成 -1 * log10 ,这样的话可以拉开差异表达基因之间的间距。

接下来就是绘制火山图了~ 代码如下:

画出来的火山图是这样色儿的:

当然,直接这么画火山图,结果是非常丑的。编辑们看到了,估计会直接拒稿吧(╥╯^╰╥),所以我们需要对它进行美化~

首先需要区分其中哪些是显著差异表达基因。因此,我们需要对logFC和adj.P.val两列进行过滤。在本文中,我们设置的过滤的条件为,adj.P.val小于0.05并且logFC大于2(4倍差异)为显著上调差异表达基因,adj.P.val小于0.05并且logFC小于-2(4倍差异)为显著下调差异表达基因。大家可以根据实验结果,适当调整logFC。

然后我们使用添加了上调和下调基因的数据重新绘制火山图。在ggpubr中,使用color参数,可以指定点的颜色。代码和画出来的图就是这样的啦:

这个版本的火山图是不是比之前好看很多呢~

当然,对于小飞老师的超高绘图水平,这张图还远远达不到发表的标准,所以我们需要在上面做更多的修饰。比如修改点的大小size和更改差异表达基因的颜色palette。

这样,一张基本热图就绘制完成了~

当然,还有很多小伙伴比对了参考的文献,发现这张图还是太丑,还远远达不到高分杂志对图片的苛刻要求。因此,我们在这张图上做了进一步调整。在ggplot2中,可以使用geom_hline和geom_vline分别添加横向和纵向的辅助线。

这样的一张热图,已经可以满足绝大多数杂志的要求啦~

当然,一张火山图还是远远不够的,同学们在给老板讲ppt的时候,常常会面临老板们指着图上其中一个点,问这是什么基因?为了避免这样尴尬,我们为大家提供了一个进阶版的火山图。为数据增加新的一列Label,将上调和下调差异表达前十的基因绘制在火山图中。

你以为到这里就结束了,可能很多同学觉得这个火山图经过我们反反复复的优化修改已经非常完美了。可是对于我们追求极致的飞飞老师来说,这还是不够的!接下来, 我们进一步修改了点的颜色,我们这里用的颜色,可是 Cell 杂志御用颜色呢 ~ 接下来,就是见证奇迹的时刻啦 ~

这样,一张完美的火山图顺利诞生啦~(可谓历尽千辛万苦啊)。想要获取火山图代码的同学,赶紧关注科研猫公众号,后台回复,火山图,免费索取哦~

转自:科研猫

最后编辑:
作者:萌小白
一个热爱网络的青年!

发布评论

表情