龙年已至,生信高级图栏目重新开张啦!新的一期将给大家介绍多组差异火山图,感受它带来的“视觉盛宴”。
一、简介
众所周知,火山图是一种常用的数据可视化工具,用于展示基因表达差异。普通的火山图主要展示两组样本之间的基因表达差异,但实验嘛,往往也需要考虑多重因素,因此在设计的时候也会出现多个分组的模式,在这种条件下,如果我们想看所有分组之间的差异情况,就需要绘制多个火山图,重复操作不说,而且也不够美观和统一。
那是否有更好的展示方式呢?答案自然是有的,首先来欣赏下面这张发表在Cell期刊上的图:
多组差异火山图(Michaela Asp et.al.)
怎么样?是不是给人眼前一亮的感觉?一目了然地展示了所有分组的差异情况。
多组差异火山图结合了散点图和直方图的特点。图例中将不同的实验分组分别用不同颜色的模块(Cluster)进行分类,每个分组分别展示组内各基因表达量的变化倍数(logFC),并根据统计检验值(adjusted P-value)大小分别用两种颜色的散点进行区分,同时对表达差异最显著的14个基因进行标记。而背景柱状图则根据所有基因logFC的绝对值大小的数据,突出显示每个分组的表达差异范围,从而形成了不同高度的柱子。基于图例中的这些信息,多组差异火山图可以清晰地展示哪些基因在不同条件下的表达发生了显著变化以及变化的程度。不仅如此,它还展示了统计检验的显著性,使得我们能够更全面地了解多组样本间的基因表达情况。
那么,这样的图是用什么工具绘制呢?它就是大名鼎鼎的ggplot2——R语言中最流行的绘图工具包,各种类型的图均可一网打尽。
它基于图层的思想,可以将绘图拆分成多个图层,并且每个图层都可以继承或修改前一层的映射关系。多组差异火山图就是基于这种特性以层层嵌套的方式来完成。首先对数据进行预处理,然后在ggplot()函数的基础图层上添加geom_col()函数绘制正负向背景柱状图,接着添加geom_jitter()函数绘制所有数据点和top14数据点,再用geom_tile()函数绘制中心分组标记图,并添加geom_text_repel()函数以避免数据点标签的互相重叠,同时用geom_text()函数绘制中心分组标记图的文本注释,最后再根据自身需求用theme()函数定制点的颜色、大小和形状等,以便更好地突出关键信息。如此,一张完整的多组差异火山图便绘制完毕啦!
二、图解
横坐标:
展示了不同颜色的Cluster,每个Cluster代表一种分组,组内红色的点代表adjusted P-value < 0.01的基因,黑色的点则表示adjusted P-value >= 0.01的基因。
纵坐标:
表示平均logFC值(基因表达变化倍数),并对top14的基因名称进行标记。
背景柱状图:
柱子的高度表示每个Cluster的基因表达差异范围。
三、应用
由于多组差异火山图能够同时展示多组样本之间的基因表达差异,因此在许多复杂的生物信息学研究中具有广泛的应用场景。例如:
在疾病研究中,我们可以利用多组差异火山图对比分析正常样本与不同疾病阶段样本的基因表达数据,以揭示疾病发生、发展的分子机制。
在药物研发过程中,多组差异火山图也可以帮助我们评估药物对不同目标基因的影响,为药物的疗效评估和机制研究提供重要依据。
四、小结
以上就是本期关于多组差异火山图的介绍,感兴趣的小伙伴们可详细参考ggplot2(https://ggplot2.tidyverse.org/) 的官方说明进行绘制。