引言
ComplexHeatmap是R语言中一款功能强大、专门用于绘制热图的包。它的高灵活性和高度定制化使其广泛应用于多个领域的研究文章中。
ComplexHeatmap 的官方教程可在此处找到,在具体使用功能时,推荐参考这个API文档。
本文将以肿瘤基因突变数据为例,展示如何使用ComplexHeatmap制作可用于SCI级别论文发表的热图。
目标图片

需要制作的热图
图片分析
目标图片具有以下特点:
主体部分由三个 oncoprint (瀑布图) 组成
rowname (基因名) 位于第一张子图左侧
每张子图的右侧都标注了基因的出现频率
第三张子图的右侧有一个相对丰度的 barplot
每张子图的上方有样本类型的标注
图例在图片的下方,横向排布
图片绘制
数据处理
在绘制复杂的热图之前,必须对原始数据进行适当的处理和整理。以下步骤详细说明了如何从原始MAF文件中提取和整理肿瘤基因突变数据,以生成适合绘制Oncoprint图的矩阵。
加载必要的R包
首先,加载所需的R包,包括 ComplexHeatmap
用于绘图,maftools
用于处理MAF文件,readxl
用于读取Excel文件,以及其他辅助包如circlize
和tidyverse
。
|
|
导入和合并MAF文件
MAF(Mutation Annotation Format)文件包含了肿瘤样本的基因突变信息。我们从不同目录中读取MAF文件,并将它们合并为一个统一的MAF对象,便于后续分析。
|
|
筛选相关基因
为了聚焦于与癌症相关的基因,我们从一个包含癌症相关基因列表的文件中读取基因符号,并筛选出这些基因的突变信息。
如果没有特定的基因列表,此步骤可跳过。
|
|
分类样本
根据基因突变情况将样本分类为三类:UC、E3和BMI。定义一个函数classify_sample
,根据特定基因的突变存在与否对样本进行分类。
如果有样本分类的Excel文件,可以直接读入,进行分组。
|
|
提取各类样本的突变矩阵
根据分类结果,将样本划分为UC、E3和BMI三类,并为每类样本生成独立的突变矩阵。每个矩阵的横轴为基因,纵轴为样本,值为突变信息。
|
|
准备颜色映射
为不同的突变类型分配颜色,以便在热图中清晰区分。使用ggsci
包中的pal_simpsons
调色板为每种突变类型生成独特的颜色。
|
|
图片绘制
利用ComplexHeatmap
包,我们将处理好的数据绘制成专业级的 Oncoprint 图。以下步骤详细描述了从颜色设置到最终图形输出的整个过程。
定义图形元素的绘制函数
通过定义alter_fun
列表,指定不同类型突变的绘制方式。背景设置为灰色,每种突变类型使用之前定义的颜色进行填充。
|
|
计算并添加相对丰度注释
为了展示每种基因突变在不同样本类别中的相对丰度,计算各类样本中基因突变的百分比,并将其作为条形图注释添加到热图的右侧。
|
|
创建各类样本的Oncoprint图
分别为UC、E3和BMI三类样本生成Oncoprint图,并添加相应的注释和图例。
|
|
整合并输出最终热图
将三个 Oncoprint 图整合在一起,并调整布局以确保图例位于图形下方,整体美观且信息传达清晰。
|
|
详细说明各绘图步骤对应图片分析的特点
主体部分由三个Oncoprint(瀑布图)组成:通过
oncop_uc
、oncop_e3
和oncop_bmi
三个oncoPrint
对象分别绘制UC、E3和BMI三类样本的突变分布图,并通过ht_list = oncop_uc + oncop_e3 + oncop_bmi
将它们整合在一起。Rowname(基因名)位于第一张子图左侧:在绘制
oncop_uc
时,row_names_side = "left"
确保基因名显示在热图的左侧。每张子图的右侧都标注了基因的出现频率:对于
oncop_uc
和oncop_e3
,虽然没有具体添加基因出现频率的注释,但可以通过oncoPrint
函数的参数show_pct
和pct_digits
来显示突变频率。第三张子图的右侧有一个相对丰度的barplot:通过在
oncop_bmi
的right_annotation
参数中添加ha
(包含相对丰度的条形图注释),实现了在第三张子图右侧添加相对丰度条形图。每张子图的上方有样本类型的标注:通过
HeatmapAnnotation
对象top_anno_uc
、top_anno_e3
和top_anno_bmi
,在每个Oncoprint图的上方添加了样本类型的标注(UC、E3、BMI)。图例在图片的下方,横向排布:在
draw
函数中,通过heatmap_legend_side = "bottom"
将图例放置在图形下方,并通过merge_legend = TRUE
将所有图例合并为一个横向排列的图例。
结果

结果示例
总结
本文详细介绍了如何使用R语言中的ComplexHeatmap
包绘制专业级的Oncoprint图,以展示肿瘤样本中基因突变的分布情况。通过数据的预处理、样本分类、颜色映射的设置以及多层注释的添加,最终生成了一个信息丰富且视觉效果出众的热图。ComplexHeatmap
的高度定制化功能使其在科研数据可视化中成为不可或缺的工具,适用于各类复杂数据的展示需求。