前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【科研猫·绘图】朋友圈最火热的“火山图”(带R代码分享)

【科研猫·绘图】朋友圈最火热的“火山图”(带R代码分享)

作者头像
用户6317549
发布2019-09-24 17:02:55
15.8K1
发布2019-09-24 17:02:55
举报
文章被收录于专栏:科研猫

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

那么,什么是火山图(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杂志御用颜色呢~接下来,就是见证奇迹的时刻啦~

这样,一张完美的火山图顺利诞生啦~(可谓历尽千辛万苦啊)

本期干货

·

!!绘制火山图代码!!

关注“科研猫”公众号

以上内容均为“科研猫”公众号原创,严禁未经许可擅自转载及资源分享,如需转载,请申请获得许可。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-08-03,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 科研猫 微信公众号,前往查看

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

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档