热图1:画热图只标注感兴趣的基因名称

该博客介绍了如何利用R语言中的ComplexHeatmap包来绘制差异基因热图,特别是在处理大量差异基因时,如何选择并展示关键基因的名称。通过标准化处理基因表达数据,创建热图,并添加自定义的基因注释,使得热图既能展示全局表达模式,又能突出显示特定的基因信息。
摘要由CSDN通过智能技术生成

做组学分析的时候,想用热图展示差异基因的情况。很多时候尤其转录组,可能得到上千个差异基因,这时候画热图不可能将所有基因的名称显示,一方面太啰嗦,一方面放不下。那么这种既想展示差异基因在样本表达中的全局情况,又想显示基因名称(自己感兴趣的或者对于研究比较关键的),怎么操作呢?接着看:

首先,准备画热图需要的文件,基因表达矩阵。(示例数据,自己瞎编的,没有任何意义)

图片

将数据入读R:


setwd("D:/生物信息学")
A <- read.csv("热图标注特定基因.csv", header = T,row.names = 1)

一般情况下用pheatmap画简单的热图,不过复杂的热图就需要用其他的包了,也就是ComplexHeatmap,学会它,在复杂的热图都能搞定。

加载包:

library(ComplexHeatmap)

先绘制一个很常规的热图:


A <- as.matrix(A) #将表达矩阵转化为matrix
samples <- rep(c('Control', 'Treat'), c(3, 3)) #定义样本分组信息  
for (i in 1:nrow(A)) A[i, ] <- scale(log(unlist(A[i, ] + 1), 2)) #对数据进行标准化处理
B <- Heatmap(A,#表达矩阵
        col = colorRampPalette(c("navy","white","firebrick3"))(100),#颜色定义
        show_row_names = F,#不展示行名
        top_annotation = HeatmapAnnotation(Group = samples, 
                                           simple_anno_size = unit(2, 'mm'), 
                                           col = list(Group = c('Control' = '#00DAE0', 'Treat' = '#FF9289')),
                                           show_annotation_name = FALSE))#分组注释

 

做出的效果如下:

图片

接下来,注释需要展示的基因信息。手动输入或者做一个列表读入,此外为了方便自己创建了一个gene list。

 

genes <- c("S100A10",
           "S100A11",
           "S100A9",
           "S100A8",
           "ILF2",
           "RPS27",
           "HAX1",
           "SNRPE",
           "SLFN5",
           "CCL5",
           "SYNRG",
           "MLLT6",
           "RPL23",
           "NCOA4",
           "BUD31",
           "TNIP1",
           "KDM6B",
           "SMG1")
genes <- as.data.frame(genes)

将注释信息添加到热图中:

B + rowAnnotation(link = anno_mark(at = which(rownames(A) %in% genes$genes), 
                                      labels = genes$genes, labels_gp = gpar(fontsize = 10))

做出来的效果如下:一张完美的热图出现了!

图片

除了这个方法,也有人自己编写函数,比复杂。我认为这种能简单就简单,达到自己的目的,取得美化的效果就可以了!

 

  • 1
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 7
    评论
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值