当前位置:   article > 正文

UMAP/TSNE降维图结合细胞比例饼图_theme_dr

theme_dr

最近微信VIP群让复现的内容有点多,有一个小伙伴提供了一篇文献,本来是要复现其中的一个内容的,但是我随意浏览了以下文章,发现了另外一张图,展示的是单细胞降维聚类图上面结合分组细胞比例饼图,这个图很新,复现也是比较简单的,所以先对这个图下手:

image.png

reference:Single-cell Transcriptomic Architecture Unraveling the Complexity of Tumor Heterogeneity in Distal Cholangiocarcinoma

本来是一个简简单单的小破图, 可是需求这个东西是无穷无尽的,以后可不敢乱提了。硬生生把一个图往天花板方向发展了。

image.png

总之,这个图还是很有用的,一个图展示了多个信息,但是凑图这个路被堵死了[图片上传中...(image-152128-1687142947490-4)]

这个内容已提前发布在微信群了,可自行下载。注释代码也已上传QQ群!

接下来我们正式做一下,首先加载单细胞对象,提取坐标和cell type。

  1. setwd('D:/KS项目/公众号文章/单细胞聚类图上添加扇形细胞比例')
  2. library(dplyr)
  3. library(Seurat)
  4. uterus <- readRDS("D:/KS项目/公众号文章/uterus.rds")
  5. df <- uterus@reductions$tsne@cell.embeddings%>%
  6. as.data.frame() %>%
  7. cbind(cell_type = uterus@meta.data$celltype)
  8. colnames(df)
  9. # [1] "tSNE_1" "tSNE_2" "cell_type"

然后共ggplot2做个图:

  1. library(ggplot2)
  2. library(dittoSeq)
  3. library(ggrastr)
  4. library(tidydr)
  5. library(scatterpie)
  6. #ggplot作图
  7. ggplot(df, aes(x= tSNE_1 , y = tSNE_2 ,fill = cell_type))+
  8. geom_point_rast(size = 2,colour="grey40",shape=21) +
  9. scale_color_manual(values = dittoColors())+
  10. theme_dr()+
  11. theme(panel.grid.major = element_blank(),
  12. panel.grid.minor = element_blank())

image.png

然后计算细胞比例,添加上每个细胞群中心位置,用于添加饼图。也可以添加上细胞群的数量,后面做一个相对化处理,用来表示饼图大小,这个图就会更加生动。

  1. Cellratio <- prop.table(table(uterus$orig.ident,Idents(uterus)), margin = 2)#计算各组样本不同细胞群比例
  2. Cellratio <- as.data.frame(Cellratio)
  3. library(tidyr)
  4. freq <-spread(Cellratio, Var1, Freq)
  5. colnames(freq)[1] <- 'celltype'
  6. freq <- freq[sort(freq$celltype),]
  7. label <- df %>%group_by(cell_type) %>%
  8. summarise(tSNE_1 = median(tSNE_1),
  9. tSNE_2 = median(tSNE_2))%>%
  10. as.data.frame()
  11. rownames(label) <- label$cell_type
  12. label <- label[c(5,3,7,6,1,2,4), ]
  13. cell_number <- as.data.frame(table(uterus$celltype))
  14. cell_number <- cell_number[c(5,3,7,6,1,2,4), ]
  15. colnames(cell_number)[2]<-'cellnumber'
  16. cell_number$cellnumber <- log2(cell_number$cellnumber)/3
  17. data = cbind(freq,label[,c(2:3)], cell_number[,c(2)])
  18. colnames(data)[7]<- 'cellnumber'
  19. ggplot()+
  20. geom_point_rast(data=df, aes(x= tSNE_1 , y = tSNE_2 ,color = cell_type),size = 1,shape=16) +
  21. scale_color_manual(values = alpha(dittoColors(),0.5))+
  22. theme_dr()+
  23. theme(panel.grid.major = element_blank(),
  24. panel.grid.minor = element_blank())+
  25. geom_scatterpie(data=data,
  26. aes(x=tSNE_1,y=tSNE_2,
  27. group=celltype,
  28. r=cellnumber),
  29. cols=names(freq)[2:4])+
  30. scale_fill_manual(values = c("red", "#F0E442", "#B14380"),name='group')#修改扇形图填充颜色

image.png

最后,将细胞比例也展示在饼图山,这样就完美了。

  1. ggplot()+
  2. geom_point_rast(data=df, aes(x= tSNE_1 , y = tSNE_2 ,color = cell_type),size = 1,shape=16) +
  3. scale_color_manual(values = alpha(dittoColors(),0.3))+
  4. theme_dr()+
  5. theme(panel.grid.major = element_blank(),
  6. panel.grid.minor = element_blank())+
  7. geom_scatterpie(data=data,
  8. aes(x=tSNE_1,y=tSNE_2,
  9. group=celltype,
  10. r=cellnumber),
  11. cols=names(freq)[2:4])+
  12. geom_text(data=data, aes(x =tSNE_1-3, y = tSNE_2+5,
  13. label = paste0(formatC(HC*100, digits = 3), "%")),
  14. nudge_y = 0.07, nudge_x = -0.25, size = 3)+
  15. geom_text(data=data, aes(x =tSNE_1, y = tSNE_2-5,
  16. label = paste0(formatC(EEC*100, digits = 3), "%")),
  17. nudge_y = 0.07, nudge_x = -0.25, size = 3,)+
  18. geom_text(data=data, aes(x =tSNE_1+5, y = tSNE_2+5,
  19. label = paste0(formatC(AEH*100, digits = 3), "%")),
  20. nudge_y = 0.07, nudge_x = -0.25, size = 3)+
  21. scale_fill_manual(values = c("red", "#F0E442", "#B14380"),name='group')

image.png

在这样就完成了,感兴趣的小伙伴可以在自己文章里面展示起来了。觉得分享有用的点个赞再走呗,也可以分享给其他需要的人!

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/羊村懒王/article/detail/343693
推荐阅读
相关标签
  

闽ICP备14008679号