美文网首页
Complexheatmap做热图之设置不一样的注释效果

Complexheatmap做热图之设置不一样的注释效果

作者: KS科研分享与服务 | 来源:发表于2023-10-10 14:07 被阅读0次

这里要写的这个热图主要是为了解决一个问题,就是关于热图的注释。而很多文章中的热图也是这种形式,可能是有PS,但是我们还是可以使用函数代码实现,所以这里我们写一下。

参考链接:

https://www.bilibili.com/video/BV1r94y187yk/?spm_id_from=333.999.0.0&vd_source=05b5479545ba945a8f5d7b2e7160ea34

这里我们的示例数据是单细胞,其他数据也是一样的,我们只不过是利用单细胞数据构建一个作图的矩阵而已,作图使用的是Heatmap函数。首先构建数据:


#加载单细胞数据
load("D:/KS项目/公众号文章/单细胞ATAC-scRNA基因气泡图/sce_test.Rdata")
library(Seurat)
library(dplyr)
DefaultAssay(sce) <- "RNA"
Idents(sce) <- "celltype"
celltype_markers  <- FindAllMarkers(sce, only.pos = TRUE, 
                                    min.pct = 0.5, logfc.threshold = 0.5)

top30 = celltype_markers %>% group_by(cluster) %>% top_n(n = 30, wt = avg_log2FC)

gene_cell_exp <- AverageExpression(sce,
                                   features = top30$gene,
                                   group.by = 'celltype',
                                   slot = 'data') 
gene_cell_exp <- as.data.frame(gene_cell_exp$RNA)
marker_exp <- t(scale(t(gene_cell_exp),scale = T,center = T))

构建注释:


library(ComplexHeatmap)
length(colnames(gene_cell_exp))
ha = HeatmapAnnotation("type" = anno_points(rep(0.5,7), 
                                            which = "column",
                                            pch=c(rep(16,7)),
                                            size = unit(7, "mm"),
                                            axis=F,
                                            gp = gpar(col = dittoColors()[1:7]),
                                            border=F,
                                            ylim=c(0,1)),
                       show_annotation_name = FALSE)

作图:

ht_list <- Heatmap(marker_exp,
                   cluster_rows = F,
                   cluster_columns = F,
                   show_column_names = T,
                   show_row_names = F,
                   column_title = NULL,
                   heatmap_legend_param = list(
                     title=' '),#legend设置
                   col = colorRampPalette(c('#1A5592','white',"#B83D3D"))(100),
                   row_names_gp = gpar(fontsize = 10),
                   column_names_gp = gpar(fontsize = 10),
                   bottom_annotation = ha,#注释放在底部,如果需要放在顶部,则选择参数top_annotation
                   border = "black")
image.png

调整下列的顺序:

ht_list <- Heatmap(marker_exp,
                   cluster_rows = F,
                   cluster_columns = F,
                   show_column_names = T,
                   show_row_names = F,
                   column_title = NULL,
                   heatmap_legend_param = list(
                     title=' '),
                   col = colorRampPalette(c('#1A5592','white',"#B83D3D"))(100),
                   row_names_gp = gpar(fontsize = 10),
                   column_names_gp = gpar(fontsize = 10),
                   bottom_annotation = ha,
                   border = "black",
                   column_order = c("SMC","LY","UEC","SF",
                                    "CEC","EC","MAC"))#调整列的顺序,让热图更加美观

image.png

这样就完美实现了,觉得分享有用的点个赞、分享下再走呗!

相关文章

网友评论

      本文标题:Complexheatmap做热图之设置不一样的注释效果

      本文链接:https://www.haomeiwen.com/subject/zkwwbdtx.html