原标题:在热图中标注出特定基因名称
对于基因的差异表达谱,常用热图作为展示。但有时差异基因可能非常的多,热图中不可能将所有基因的名称标注出来。那么此时不妨选择一些比较重要的基因(比方说p值最显著的那些),在图中指示它们的位置。
我们来看这篇文献“Transcriptome Profiling of Adipose Tissue Reveals Depot-Specific Metabolic Alterations Among Patients with Colorectal Cancer”中,是怎样展示热图的。文中比较了结直肠癌患者的内脏脂肪组织(VAT)和皮下脂肪组织(SAT)的转录组谱,将差异表达的基因展示为热图。热图整体结构在标注了部分基因后,并未显得凌乱,同时还能告知读者哪些基因是重要的,必要时还可仔细比较它们的表达值,是种不错的表现方法。
文献插图,热图中只标识出重要的基因或蛋白名称
图1,(a)VAT和SAT之间差异表达基因的热图。
准备作图文件
接下来,就让小编带大家了解怎样在R中绘制这种只标识重要基因的热图。
为了绘制这种热图,首先要准备两类数据。
(1)基因表达矩阵,行是基因,列是样本,表达值可以是FPKM或者log转化后的表达值等都可以。
示例文件,基因表达值矩阵
(2)基因名称列表,将待标识的重要基因名称以一排的形式放在一个列表中。
示例文件,重要的少数基因的名称列表
R包ComplexHeatmap的热图绘制
随后,将上述两个数据导入R中,绘制热图。
首先读取基因表达值矩阵,绘制一个常规的无基因名称的热图。
!!!**************************************************
#读取的示例文件
#gene.txt是基因表达值矩阵
#name.txt是带展示名称的基因列表
#加载ComplexHeatmap包绘制这种类型的热图
library(ComplexHeatmap)
#表达矩阵,考虑到ComplexHeatmap没有scale参数,因此需事先手动做个行标准化
mat
for (i in 1:nrow(mat)) mat[i, ]
mat
#定义样本分组,例如示例文件中共 A、B、C 3组
samples
#先绘制一个不显示任何基因名称的热图
heat
col = colorRampPalette(c('green', 'black', 'red'))(100), #定义热图由低值到高值的渐变颜色
heatmap_legend_param = list(grid_height = unit(10,'mm')), #图例高度设置
show_row_names = FALSE, #不展示基因名称
top_annotation = HeatmapAnnotation(Group = samples,
simple_anno_size = unit(2, 'mm'),
col = list(Group = c('A' = '#00DAE0', 'B' = '#FF9289', 'C' = 'blue')), #定义样本分组的颜色
show_annotation_name = FALSE),
column_names_gp = gpar(fontsize = 10), row_names_gp = gpar(fontsize = 6))
heat
!!!**************************************************
一个常规的不展示基因名称的热图
随后,将重要的待展示名称的基因名称列表读入到R中,并添加在热图右侧显示出。
!!!**************************************************
#读取待展示的基因名称,并添加到热图中
name
heat + rowAnnotation(link = anno_mark(at = which(rownames(mat) %in% name$V1),
labels = name$V1, labels_gp = gpar(fontsize = 10)))
!!!**************************************************
右侧标识重要基因的名称
搞定,是不是非常简单实用呢?
!
!
!
注:!!!*******之间为R脚本内容
搜索微信公众号“纪伟讲测序”,关注我们,欢迎您来电咨询交流返回搜狐,查看更多
责任编辑: