Closed ixxmu closed 4 days ago
生信作曲家一直致力于构建国内和谐、开放、可持续的生物信息交流平台。生信作曲家的目标是为每个科研人扫清科研路上的一切障碍,让生物信息学人人可做。目前,生信作曲家已推出"跟着一区文章学通机器学习”、"跟着一区文章学通单细胞"、"空间转录组从入门到精通”、孟德尔随机化实战”、scFEA、NATMI、CIBERSORTx、hdWGCNA、cytotalk、metaVIPER算法等多种强力教程,同时也兼具数据整理、可视化等核心入门技术教学,开办空间转录组计划smrsp/sp、孟德尔随机化系列计划IM/MR)、临床数据库系列、肿瘤发文计划RS/max,非肿瘤发文计划note/ultra/pro、暑期集训营和冬季集训营等多次。辅导同学实现纯生信SCI发表硕果累累,帮助同学实现医学事业路上的理想与追求。
今天我们来学习给单细胞降维UMAP图加上每个cluster的组别分布,用来展示每个seurat_clusters细胞都属于哪个组。类似下图。
首先你需要自己完成一个右上角图,当然这是比较简单的。我们要做的是下面两个图的类型。
load('scRNA.Rdata')
整合后的单细胞数据在seurat_integrated中
载入包
library(cowplot)
library(ggpubr)
library(dplyr)
library(readr)
library(tidyr)
library(ggforce)
library(pals)
library(pheatmap)
library(scales)
library(ggthemes)
library(Seurat)
library(ggplot2)
library(scatterpie)
把umap坐标提取出来
groupCols <- c('HC'="#00AFBB", 'UC'="#FC4E07" )
cell_eb <- data.frame(seurat_integrated@reductions[["umap"]]@cell.embeddings[,1:2],cluster=as.character(seurat_integrated$seurat_clusters),group=as.character(seurat_integrated$disease), stringsAsFactors = F)
colnames(cell_eb) <- c('x','y','cluster', 'group')
head(cell_eb)
将每个点按照分组进行填充
p1 <- ggplot(data=cell_eb, aes(x,y)) + geom_point(aes(colour = factor(group)), alpha=0.5, size=0.25,show.legend = F) +
scale_color_manual(values = alpha(groupCols, alpha = 0.3),breaks=NULL) + theme_pubr()+ NoAxes()
p1
计算每个cluster两个组别所占各自总组别的比例
df <- seurat_integrated@meta.data %>% dplyr::count(seurat_clusters, disease)
df$n <- df$n/as.numeric(table(seurat_integrated@meta.data$disease)[df$disease])
print(df)
每个簇的饼图位置
coords <- cell_eb %>% group_by(cluster) %>% dplyr::summarise(x=median(x), y=median(y)) %>% as.data.frame
coords <- coords %>% mutate(x,y)
print(coords)
添加半径
piedf <- reshape2::acast(df, seurat_clusters ~ disease, value.var = "n")
piedf[is.na(piedf)] <- 0
piedf <- as.data.frame(piedf)
piedf$cluster <- rownames(piedf)
piedf<- merge(piedf, coords)
cellnumbers <- dplyr::count(cell_eb, cluster)
piedf$cluster <- as.numeric(piedf$cluster)
piedf<- arrange(piedf,cluster)
sizee <- cellnumbers[match(piedf$cluster, cellnumbers[,1]), 2]
piedf$radius <- scales::rescale(sizee, c(0.4,0.9))
piedf$cluster <- as.character(piedf$cluster)
print(piedf)
绘制饼图
p2<- p1 +
geom_scatterpie(aes_(x=~x,y=~y,r=~radius), data=piedf,
cols=c('HC','UC'),show.legend = TRUE) +
coord_equal() + scale_fill_manual(values = groupCols,name=NULL)
p2
添加管理员微信 Bio_com或扫描下方二维码交流更多。
最后,我们推出一个免费赠书活动。这本教材最大的特点是注重实践应用,提供大量案例并配套视频教程,教读者使用SPSS、GraphPad Prism等软件进行实战,确保学以致用。只需要点赞,在看本文,即可参与抽奖!每800阅读量即可赠送一本,例如本推送阅读量为1700,即可有两名幸运同学即可获取本书,备注“赠书”
https://mp.weixin.qq.com/s/EdGdDDLfkqlywZQ_QO11EQ