单细胞常见的可视化方式有DimPlot,FeaturePlot ,DotPlot ,VlnPlot 和 DoHeatmap几种 ,Seurat均可以实现,但文献中的图大多会精美很多。比如
惊艳umap图: scRNA复现|所见即所得,和Cell学umap,plot1cell完成惊艳的细胞注释umap图;
DimPlot美化 scRNA分析 | 定制 美化FeaturePlot 图,你需要的都在这,
DotPlot美化scRNA分析| 和SCI学 定制化聚类点图(Dotplot ),含二行代码出图方式,
本次介绍DoHeatmap 热图的美化。
(1)Seurat优化
(2)dittoSeq 一键式 热图
(3)scillus 一键式 热图
一 载入R包,数据
仍然使用之前注释过的sce.anno.RData数据 ,后台回复 anno 即可获取
library(Seurat)
library(tidyverse)
library(viridis)
library(RColorBrewer)
load("sce.anno.RData")
head(sce2,2)
二 Seurat 调整,美化
首先计算marker基因,然后使用seurat的DoHeatmap 函数绘制初始热图
all_markers <- FindAllMarkers(object = sce2)
top5 <- all_markers %>% group_by(cluster) %>% top_n(5, avg_log2FC)
##Seurat 初始热图
DoHeatmap(sce2,top5$gene)
相较文献可调整(1)anno的标签有无以及大小(2)热图的颜色(3)聚类与否(4)是否添加sample,group 以及 评分等anno中相关信息的注释。
基于seurat的基础上,同样也可以使用ggplot2 的一些函数进行美化
DoHeatmap(sce2, label = F , # 不加label
features = as.character(unique(top5$gene)),
group.by = "celltype",
assay = "RNA",
group.colors = c("#C77CFF","#7CAE00","#00BFC4","#F8766D","#AB82FF","#90EE90","#00CD00","#008B8B","#FFA500"))+ #设置组别颜色
scale_fill_gradientn(colors = c("navy","white","firebrick3"))#设置热图颜色
至于是否聚类,更多meta信息的注释,交给后续选手了!
三 "定制"热图
提取单细胞矩阵,然后使用pheatmap 或者 complexheatmap 进行绘图
mat <- GetAssayData(pbmc,slot = 'scale.data')
注意使用scale后的数据,该方法需要一些基础知识的组合,以及时间的调整,但绝对是值得的。一些绘图细节可以参考:
scRNA分析| 和SCI学 定制化聚类点图(Dotplot ),含二行代码出图方式
下面同样给出封装比较好的2个现有R包,都可以一个函数完成多种美化内容,自行选取一个即可。
四 dittoSeq 绘制
使用dittoSeq 包中的dittoHeatmap函数,快速且简单的完成热图绘制以及多个meta信息的注释
#BiocManager::install("dittoSeq")
library(dittoSeq)
dittoHeatmap(sce2, top5$gene,
annot.by = c("celltype", "sample","AUCell"))
可以使用??dittoHeatmap 查看更多的参数 或者 参照文末的链接,自定义热图的颜色,anno的颜色,是否聚类等。
五 scillus 绘制
scillus-R 包也是一个神器,这里只展示热图的绘制,更多的单细胞可视化参考文末的参考链接。
#devtools::install_github("xmc811/Scillus", ref = "development")
library(Scillus)
#使用和umap一致的颜色
my36colors <-c('#E5D2DD', '#53A85F', '#F1BB72', '#F3B1A0', '#D6E7A3', '#57C3F3', '#476D87',
'#E95C59', '#E59CC4', '#AB3282', '#23452F', '#BD956A', '#8C549C', '#585658',
'#9FA3A8', '#E0D4CA', '#5F3D69', '#C5DEBA', '#58A4C3', '#E4C755', '#F7F398',
'#AA9A59', '#E63863', '#E39A35', '#C1E6F3', '#6778AE', '#91D0BE', '#B53E2B',
'#712820', '#DCC1DD', '#CCE0F5', '#CCC9E6', '#625D9E', '#68A180', '#3A6963',
'#968175'
)
plot_heatmap(dataset = sce2,
markers = top5$gene,
sort_var = c("celltype","sample"),
anno_var = c("celltype","sample","percent.mt","AUCell"),
anno_colors = list("Set2", # RColorBrewer palette
my36colors, # color vecto
"Reds",
"Greens"))
使用和umap一致的颜色,方便对比。anno_colors 接受一个list对象,根据anno_var 中的注释变量的情况,选择连续或者分类的颜色。
参考资料:
https://scillus.netlify.app/vignettes/plotting.html
https://bioconductor.org/packages/devel/bioc/vignettes/dittoSeq/inst/doc/dittoSeq.html