NCS质感图表:Seurat单细胞DotPlot函数基因表达气泡

2023-07-25  本文已影响0人  KS科研分享与服务

关于单细胞气泡图的做法,我们写过很多很多,但是这些图基本上都是利用Seurat提取了数据,然后在ggplot2中完成的。因为Seurat包中的DotPlot函数的底层就是ggplot2,所以这里我们决定就是用Dotplot函数,然后进行修饰,得到具有NCS质感的图片。

当然了,这篇内容对于高手来说没什么,但是对于一般学习者而言,我们解决的问题有:1、基本函数的使用技巧。2、气泡图注释拼图。首先我们读入数据做一个气泡图。横坐标当然是基因了,纵坐标我们不希望是celltype,而是既包含celltype,还包含分组信息的,于是我们这样作图:

library(Seurat)
library(ggplot2)
library(cowplot)
markers <- c("SPARCL1","GNG11","IFITM3","AQP1","IGFBP7","IFI27",
             "CD3D","CD2","TRAC","CD3G","CD3E","TRBC2","PTPRC","GZMA",
             "AIF1","MS4A6A","MNDA","SPI1","LYZ",
             "S100A8","S100A9",
             "MS4A2","HPGDS","TPSAB1","HDC")

DotPlot(human_data, features = markers, split.by = 'orig.ident')

但是收到了如下的报错:

Error in DotPlot(human_data, features = markers, split.by = "orig.ident") : 
  Not enough colors for the number of groups

很显然分组太多,默认颜色不够了,我们自己添加点。

library(dittoSeq)
DotPlot(human_data, 
        features = markers, 
        split.by = 'orig.ident',
        cols = dittoColors())
image.png

分组没有毛病了,然而这显然也不是我们需要的图,因为每一个样本表达量一种颜色,而我们需要的表达气泡图是一种连续的渐变。

所以,我们在seurat对象metadata中新建一列,这一列将celltype和样本分组结合起来,然后将新的列设置为idents。这样这个问题就得到完美的解决了。

human_data@meta.data$newgroup <- paste0(human_data$celltype,"_",human_data$orig.ident)
Idents(human_data) <- 'newgroup'
Idents(human_data) <- factor(Idents(human_data), levels = c(paste0("Macrophage","_",unique(human_data$orig.ident)),
                                                            paste0("T cell","_",unique(human_data$orig.ident)),
                                                            paste0("mDC","_",unique(human_data$orig.ident)),
                                                            paste0("Neutrophil","_",unique(human_data$orig.ident)),
                                                            paste0("Mast","_",unique(human_data$orig.ident))))        

DotPlot(human_data, features = markers, cols = c("lightgrey", "red"))
image.png

然后,我们对图的主题进行修饰,增加分组注释,添加分割线,添加背景,等等一系列的操作之后,我们就得到妥妥的NCS质感的图片。

image.png
上一篇下一篇

猜你喜欢

热点阅读