热图(Heatmap)作为展示基因表达模式最直观的工具。
它经常用在分子生物学文章里(尤其是microarray, RNA-seq相关论文)直观地呈现多样本多个基因的全局表达量变化,和呈现多样本或多基因表达量的聚类关系。
本文重点介绍如何用
ComplexHeatmap::Heatmap
的方法在热图上展示全样本的基因表达量情况的同时,在样本组水平上展示簇间的聚类关系(如果样本太多,则展示样本间的聚类关系将变得非常不直观)。
阅读本文你掌握一定的ComplexHeatmap
绘图语法,以及收获热图样式代码一份。
###测试数据集准备
future::plan("multiprocess", workers = 6);options(future.globals.maxSize = 100000 * 1024^5) #设置任务多线程
##Data process >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
scRNA <- readRDS("test.RDS") #加载Seurat对象数据
### 计算seurat_cluster间的 差异基因
markers <- FindAllMarkers(object = scRNA, only.pos = FALSE, min.pct = 0.25, logfc.threshold = 0.25)
### 挑选每个cluster top5 的基因画表达热图
select.features <- markers %>% group_by(cluster) %>% top_n(n = 5, wt = avg_log2FC)
### 随机为 细胞样本分配一个模拟标签
scRNA@meta.data$sample <- sample(c("species.1","species.2","species.3","species.4"),size = ncol(scRNA),replace = T)
### 提取Seurat绘制热图的矩阵数据
data <- Seurat::DoHeatmap(scRNA, features = select.features$gene, group.by = "seurat_clusters", group.bar = T, size = 4)$data
### 提取细胞标识
cell.meta <- scRNA@meta.data %>% tibble::rownames_to_column(var="Cell") %>%
select(Cell,seurat_clusters,sample) %>%
arrange(seurat_clusters) %>% mutate(Identity = seurat_clusters)
### 长数据转换宽数据
counts <- data %>% select(!Identity) %>%
tidyr::pivot_wider(names_from = Cell, values_from = Expressi