❝详情请联系作者: ❞ 玩转单细胞(5):单细胞UMAP图只标记特定细胞群、圈定细胞群及坐标轴修改 又来到玩转单细胞系列了,这个系列其实就是一些比较有用的单细胞操作,当然了,我们的数据都是基于Seurat包来做的。今天这一期我们说三个问题,都是数据的处理,有什么用呢?对于初学者当然你可以更加理解单细胞数据的常规操作,也能够学习掌握一些数据处理技巧。对于其他人呢,可以多掌握一种方法,可以保存在电脑里,不需要记住,使用的时候可以翻一翻。 ●Case1:seurat对象metadata分组/celltype重命名有时候我们遇到这样的情况,我们做好单细胞降维聚类了,比如有0-22群的clusters,可是其中14、15cluster是低质量的细胞,我们需要删除,当然很简单使用subset即可,然而这样的情况就是cluster命名是数字不连续,如果这样的数据展示出来,别人看着会迷糊。所以我们可以对cluster重命名,让其变成连续的数字。这里我们使用dplyr包的mapvalues函数。library(plyr) library(Seurat) library(ggplot2) library(ggstatsplot) #======================================================================================
#这里我们以cluster为例 Idents(human_data) <- 'seurat_clusters' p1 <- DimPlot(human_data, label = T) unique(human_data@meta.data$seurat_clusters) # [1] 5 0 3 4 2 10 7 6 # Levels: 0 2 3 4 5 6 7 10
human_data@meta.data$newCluster <- mapvalues(human_data@meta.data$seurat_clusters, from=c(0,2:7,10), to=c(1:8))
Idents(human_data) <- human_data@meta.data$newCluster p2 <- DimPlot(human_data, label = T) p1+p2
●Case2:提取单细胞降维数据使用ggplot2修饰ggplot2修饰单细胞降维数据我们之前讲过很多。例如:Nature作图也出错:单细胞UMAP/TSNE图的ggplot做法与修饰。一般情况下我们只提取了坐标信息,celltype信息合并,然后做一个celltype UMAp图。这里我们将坐标信息与metadata结合,这样一个数据你可以用于所有类型的降维数据作图修饰。#case2:提取数据进行ggplot修饰(直接将坐标信息与metadat结合,这样就可以进程多种图形修饰了) coord = Embeddings(object = human_data, reduction = "umap") %>% as.data.frame()%>% `colnames<-`(c('UMAP1','UMAP2')) coord$ID <- rownames(coord) #把mtetadata与坐标信息结合,这样不论你想修饰什么,可随意使用数据 meta = data.frame(ID = rownames(human_data@meta.data), human_data@meta.data,stringsAsFactors = F) meta = left_join(meta, coord, by = 'ID')
label <- meta %>% group_by(newCluster) %>% select(UMAP1, UMAP2) %>% summarize_all(mean)
ggplot() + geom_point(data = meta, mapping = aes(x = UMAP1, y = UMAP2, color = newCluster), size = 0.5)+ geom_text(data = label, aes(x = UMAP1, y = UMAP2, label=newCluster))
#再例如我们要做不同样本的UMAp图,那么直接将颜色填充换成orig.ident或者group即可。 ggplot() + geom_point(data = meta, mapping = aes(x = UMAP1, y = UMAP2, color = orig.ident), size = 0.5) 细胞比例的展示我们也是讲过很多了,大家比较喜欢的例如:nature级别图表:单细胞转录组细胞比例统计可视化函数。这里我们提供两种比较常规的方式,各种细胞类型在不同分组下用柱状图展示。也介绍一个比较好的可视化统计R包ggstatsplot,网上有专门的介绍它的帖子,也是非常好用的,感兴趣学习一下。#case3:细胞比例
cellratio <- prop.table(table(human_data$celltype, human_data$orig.ident), margin = 2)%>% as.data.frame()%>% `colnames<-`(c('celltype','orig.ident','Freq'))#计算细胞比例
cellratio$group <- c(rep('BM',15), rep("GM",15))
cellratio1 <- cellratio%>% group_by(celltype, group) %>% summarise(avg.freq = mean(Freq), sd.freq = sd(Freq), se.freq = sd(Freq)/sqrt(n()))
#这种作图就比较普通了,也就所有celltype放在一起 ggplot(data = cellratio1, mapping = aes(x = celltype, y = avg.freq, color = group, fill = group)) + theme_bw() + geom_bar(stat = "identity", position=position_dodge()) + geom_errorbar(data = cellratio1, aes(ymin=avg.freq-se.freq, ymax=avg.freq+se.freq), width=0.3, size = 0.5, color = "black", position=position_dodge(0.9)) + geom_jitter(data = cellratio, mapping = aes(x = celltype, y = Freq), color = "black", position = position_dodge(width = 0.9), size = 1)
#这里提示一种比较好用的统计分析作图R包ggstatsplot #非常友好,分析结果清晰直接展示在图上,有兴趣的可以学习下 g <-ggstatsplot::grouped_ggbetweenstats( data = cellratio, x = group, y = Freq, grouping.var = celltype, xlab = "Group", ylab = "Sample fraction", p.adjust.method = "fdr", # adjust p-values for multiple tests using this method ggtheme = theme_classic(base_size = 20), package = "ggsci", palette = "default_jco", plotgrid.args = list(ncol = 3)) ggsave("cellretaio_figure.pdf", g, width = 650, height = 500, units = "mm") 今天的分享就到这里了,希望对你的学习有帮助。觉得分享有用的点个赞、点一下看一看再走呗!
|