分享是一种态度
最近看到有这种只标定特定细胞群的聚类分群图,想想应该不是很难,应该可以用DimPlot来实现,下面就是具体的探索啦。
首先尝试只提取特定的细胞群的cell作为DimPlot的输入。但是发现只标定特定细胞群时,坐标轴和配色都发生了变化(下图中的第一和第二个子图):
kp1 = sce$celltype =='B'
kp2 = sce$celltype %in% c("Naive CD4 T", "Memory CD4 T" )
DimPlot(sce[,kp1]) + DimPlot(sce[,kp2]) + DimPlot(sce,label = TRUE)
因为每次DimPlot()
的坐标轴和配色配置是独立的,所以在所有聚类分群图上的坐标轴和颜色是不能自动和特定细胞群的聚类分群图统一的。那么我们需要修改代码来满足取子集的同时,让坐标轴不变化,配色也不变化。
在查看DimPlot()
函数介绍的时候发现cells.highlight
参数用来高亮显示在降维可视化图(比如UMAP)中特定的细胞。这个参数接受一个向量,包含要高亮的细胞的名称。只是高亮,不会影响坐标轴结构。
那么如何得到特定细胞群的颜色呢?我想到首先需要得到DimPlot默认所用的颜色,该函数与ggplot2类似,所以搜索发现hue_pal()
函数可以得到默认的配色。然后找到特定细胞群名字在所有细胞群的位置,得到他的颜色。
整体的思路就是要找到特定细胞群的颜色和细胞名称。代码如下:
# 得到分组数目
tmp_length <- length(levels(sce$celltype))
# 获得默认的颜色
cell_type_cols <- hue_pal()(tmp_length)
# 找到B对应的颜色和细胞id
B_col<- cell_type_cols[levels(sce$celltype) == "B"]
B_highlight<- list(B=WhichCells(pbmc, idents="B"))
# 找到CD4对应的颜色和细胞id
CD4_col <- cell_type_cols[levels(sce$celltype) %in% c("Naive CD4 T", "Memory CD4 T" )]
CD4_highlight<- list("Naive CD4 T"=WhichCells(pbmc, idents="Naive CD4 T"),"Memory CD4 T"=WhichCells(pbmc, idents="Memory CD4 T"))
# 画图
DimPlot(pbmc, cells.highlight=B_highlight,cols.highlight=B_col,label = TRUE)+
DimPlot(pbmc, cells.highlight=CD4_highlight,cols.highlight=CD4_col,label = TRUE)+
DimPlot(sce,label = TRUE,cols = cell_type_cols)
看来达到了我们的目的:只标定特定细胞群,保持坐标轴和配色不变化。感兴趣的你也可以试试哦。