单细胞填坑快2年了,虽说经常遇到一些薅头发的时候,但却总是割舍不掉。嗨,打啥感情牌呀,进入主题。在单细胞转录组分析中,目前使用的最广的软件是基于R的Seurat,具体安装方式大家可以参考我之前的简书。Seurat的画图算法大体上都是基于ggplot的,但有些好看的图是没法用其函数进行实现,那么接下来我们上菜吧!
- 点图
在Seurat软件包中,DimPlot函数基本上能较好地展示我们常见的一些分析需求。我们看一下他的函数解释:
DimPlot(
dims = c(1, 2),
cells = NULL, ###绘制您想展示的细胞集
cols = NULL, ###颜色
pt.size = NULL, ###点的大小
reduction = NULL, ###降维可视化方法,一般是tsne或者umap
group.by = NULL, ###颜色填充的依据
split.by = NULL, ###一个坐标轴中展示一种split的元素,类似于分页图
shape.by = NULL, ###形状填充的依据
order = NULL, ###对一些覆盖的idents(细胞群id)进行优先展示
label = FALSE, ###在图中显示群名标签
label.size = 4, ###群名标签字体大小
repel = FALSE, ###Repel 标签
cells.highlight = NULL, ###高亮某种类型的细胞群
cols.highlight = "#DE2D26", ###高亮的颜色
sizes.highlight = 1, ###高亮的大小
na.value = "grey50", ###未高亮的细胞群颜色
combine = TRUE, ###是否将所有图形放在一起
ncol = NULL, ###展示多少列的图形
...
)
以上参数的选择能帮您绘制各式各样的点图。
接下来我们采用第三方软件来增加点图的丰度~
推荐一个画图函数,ggscatter。接下来看看他们能做什么吧。我这里不提供测试数据,大家可自行去查找一些数据,但是脚本的格式是一样的。首先,我们来看一下下面这张经典的分析T细胞的t-SNE图。
这个图是不是很好看?看看如何用ggscatter来实现它吧。
第一步:获取数据
pbmc@meta.data$Barcode <-rownames(pbmc@meta.data)
x<-as.data.frame(pbmc@reductions$umap@cell.embeddings)
x$Barcode <-rownames(x)
y <-data.frame(pbmc@meta.data[,c('Barcode','seurat_clusters','tech')])
lab <-merge(x,y,barcode='Barcode')
color<-hue_pal()(13) ###R绘图的默认色
lab$seurat_clusters <-factor(lab$seurat_clusters,levels=0:12) ##按照cluster id进行排序
数据格式如下所示:
接下来绘制上图。
pdf('test_umap.pdf',w=12,h=8)
p8 <- ggscatter(lab, x = "UMAP_1", y = "UMAP_2",
color = "seurat_clusters", shape = "tech",palette = color,fill= "seurat_clusters",ellipse = TRUE,size=0.8,ellipse.level = 0.95,ellipse.alpha=0)
p8
dev.off()
ggscatter函数的参数介绍有个大神已经描述的很详细的了,大家可以移步Davey1220进行查看。
上图需要设置的一个参数为palette=c() 椭圆填充颜色的列表
ellipse=T,表示添加椭圆。size为点的大小。ellipse.level 正态概率中有多少对象在这个椭圆中,即椭圆的大小。ellipse.alpha为填充颜色的透明度,alpha = 0表示没有填充颜色。
图形如下所示:
个人觉得图形仍然不是很好看,各位看官自己掂量吧~~