生信学习

热图2:分组聚类,让热图分裂

2021-11-30  本文已影响0人  KS科研分享与服务

还记得之前我们发过的热图吗?


image.png

样品之间聚类的时候发现对照和实验组混合到了一起。这是由于样品一致性差造成的,这种情况很多时候都会遇到。一般的做法是放弃列的聚类。但是我不,很多文章也是,我就想样品聚类。
怎么办?
让聚类按照样本来,把热图裂开来就可以了。这次使用的还是ComplexHeatmap包。
读入作图数据、并加载包:

setwd("D:/生物信息学")
A <- read.csv("基因.csv", header = T,row.names = 1)
library(ComplexHeatmap)

对样本进行注释:

A <- as.matrix(A)
samples <- rep(c('Control', 'Treat'), c(3, 3)) #定义样本分组信息  
for (i in 1:nrow(A)) A[i, ] <- scale(log(unlist(A[i, ] + 1), 2))#标准化处理
Group = factor(rep(c("control","treat"),times = c(3,3)))#分组信息,用于热图分割
Group = factor(Group,levels = c("control","treat"))

热图顶部注释(结合图的效果自行修改):

top_annotation = HeatmapAnnotation(cluster = anno_block(gp = gpar(fill = c("#009933", "#FF3333")),
                       labels = c("Control","Treat"),
                       labels_gp = gpar(col = "black", fontsize = 12)))#通用代码

作图:

Heatmap(A,#表达矩阵
        col = colorRampPalette(c("navy","white","firebrick3"))(100),#颜色定义
        show_row_names = F,#不展示行名
        top_annotation = top_annotation,#顶部分组信息
        column_split = Group,#用group信息将热土分开,以group聚类
        column_title = NULL,#不显示列标题
        show_column_names = F)#不显示列名
效果如下,看起来还是可以!
image.png

热图都是常规操作了,没啥好说的,我们这里准备做一个系列,大概会有4~5篇文章的篇幅,每篇文章短小精悍,直击问题要害,说说热图的不常规操作,让热图更加美化,也更加有高级文章的质感!
那么下一次的热图系列预告:---行的分组注释!

上一篇下一篇

猜你喜欢

热点阅读