热图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篇文章的篇幅,每篇文章短小精悍,直击问题要害,说说热图的不常规操作,让热图更加美化,也更加有高级文章的质感!
那么下一次的热图系列预告:---行的分组注释!