美文网首页认真搞科研生物信息学与算法生信大杂烩
【科研猫·绘图】朋友圈最火热的“火山图”(带R代码分享)

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

作者: fc7587d03c83 | 来源:发表于2019-08-22 10:25 被阅读17次

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

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

    这样,一张完美的火山图顺利诞生啦~(可谓历尽千辛万苦啊)。想要获取火山图代码的同学,见文末科研猫_胖雨小姐姐二维码,免费索取哦~

    讲师简介:

    飞飞老师,绰号“小飞鼠”,国家重点实验室生物信息学博士,生物信息及动画专业双985学士,有近十年科研绘图经验,精通R、Python、Perl等多门编程语言及Photoshop、Illustrator、InDesign、After Effects、Cinema 4D、Maya等制图软件,已发表多篇高质量SCI论文(包括10分以上两篇),并多次操刀设计Journal封面绘图。授课经验丰富,已辅导学员完成论文绘图近千张,辅导发表SCI论文80余篇。下面我们一起按照由易到难的顺序,欣赏一下飞飞老师的大作吧:

    1.  初级统计绘图

    2.复杂统计绘图

    3.流程图、机器学习、三维制图

    4.复杂三维绘图、杂志封面

    看了我们飞飞老师的简历和这么多美图,是不是也很想跟着她系统地学习科研绘图呢?关注"科研猫"公众号,《科研绘图系列》持续更新中.......下面就是最激动人心的时刻。

    本期干货

    !!绘制火山图代码!!

    关注“科研猫”公众号,联系客服

    胖雨小姐姐

    or

    折耳猫小姐姐

    领取

    更多科研新鲜资讯、文献精读和生物信息技能,请关注科研猫公众号

    下方点好看,更多好看。

    往期资源链接

    R语言从入门到精通系列

    从今天开始,每天学点R语言~(领取教材)

    R语言从入门到精通:Day1 (领取安装包)

    R语言从入门到精通:Day2(领取RStudio操作视频)

    R语言从入门到精通:Day3(领取测试代码)

    R语言从入门到精通:Day4(领取代码)

    R语言从入门到精通:Day5(领取代码)

    R语言从入门到精通:Day6 (领取代码)

    科研作图系列

    【科研猫·绘图】看·箱线图·如何美丽动人(代码分享)

    【科研猫·绘图】优雅版·小提琴图(带R代码分享)

    【科研猫·绘图】缤纷版·韦恩图(带R代码分享)

    【科研猫·绘图】今夏最热的“热图”(带R代码分享)

    生存分析系列

    【科研猫】生存分析的正确姿势(1)视频+R代码分享

    【科研猫·出品】TCGA超大批量生存分析教程

    GEO数据挖掘系列

    GEO数据库挖掘(1)--SCI文章速成

    GEO数据库挖掘(2)--快速锁定目标数据

    挖掘GEO速成SCI文章系列教程(3)-R语言基础

    重磅:GEO数据库挖掘教程(4)一体化分析代码(带视频+R代码分享)

    GO/KEGG功能富集系列

    3分钟了解GO/KEGG功能富集分析

    干货预警:3分钟搞定GO/KEGG功能富集分析(2)

    终极篇:3分钟搞定GO/KEGG功能富集分析-柱状图

    终极篇:3分钟搞定GO/KEGG功能富集分析-气泡图

    TCGA数据挖掘系列

    隔壁实验室的“秃鹫”师兄又发SCI啦--TCGA数据挖掘实战

    TCGA数据挖掘终结者:cBioPortal

    生物信息入门系列

    大咖聊“生信”—生物信息系列(1)

    生物信息系列课程-R语言入门

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

    相关文章

      网友评论

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

        本文链接:https://www.haomeiwen.com/subject/uywgsctx.html