类似2021年CELL 文章Single-cell landscape of the ecosystem in early-relapse hepatocellular carcinoma,单细胞文献的Fig1一般会有细胞类型的全局umap图,分样本 和 分组的umap图 ,以及分样本 和 分组的细胞类型比例柱形图。
本推文介绍一下如何实现,涉及(1)颜色调整 ;(2)标签顺序设定 ;(3)pathwork组图拼图 。
一 调整umap图
读取scRNA分析|Marker gene 可视化 以及 细胞亚群注释--你是如何人工注释的?中注释后的RData文件 ,然后查看一下
library(Seurat) library(tidyverse) library(patchwork) #拼图 #读取数据 load("sce.anno.RData") head(sce2@meta.data) table(sce2@meta.data$celltype)
1.1 设置颜色
colour=c("#DC143C","#0000FF","#20B2AA","#FFA500","#9370DB","#98FB98","#F08080","#1E90FF","#7CFC00","#FFFF00", "#808000","#FF00FF","#FA8072","#7B68EE","#9400D3","#800080","#A0522D","#D2B48C","#D2691E","#87CEEB","#40E0D0","#5F9EA0", "#FF1493","#0000CD","#008B8B","#FFE4B5","#8A2BE2","#228B22","#E9967A","#4682B4","#32CD32","#F0E68C","#FFFFE0","#EE82EE", "#FF6347","#6A5ACD","#9932CC","#8B008B","#8B4513","#DEB887") t1 <- DimPlot(sce2, reduction = 'umap', cols = colour , #设置颜色 repel = T, #label不重叠 label.size = 5, #调整label的大小 label = TRUE, #是否展示label pt.size = 0.5) t2 <- DimPlot(sce2, reduction = 'umap', group.by = "sample", cols = colour , label = F, pt.size = 0.5) t1 + t2
颜色比默认时候好很多 ;但是分样本umap图的标签顺序是MET样本在上 PT样本在下,想更改一下 ,可以使用以下设置factor的方式进行。
注:group.by 选择metadata中的某列 即可以进行展示了 。当然可以添加你想展示的各种score,表达量,时序结果等等。 还有一个 split.by 函数 ,也很有用,可以自行试一下。
1.2 设置标签顺序
标签顺序可以自定义为自己想展示的顺序
#设置sample的顺序 sce2@meta.data$sample <- factor(sce2@meta.data$sample, levels=c("P01", "P02","P03", "P04" , "P05","P06","P07" ,"P08", "P09" ,"P10" , "MET01" ,"MET02","MET03" ,"MET04" ,"MET05" ,"MET06" ) ) #设置group顺序 sce2@meta.data$group <- factor(sce2@meta.data$group, levels=c("PT", "MET") ) Idents(sce2) <- "celltype" p1 <- DimPlot(sce2, reduction = 'umap', cols = colour , #设置颜色 repel = T, #label不重叠 label.size = 5, #调整label的大小 label = TRUE, #是否展示label pt.size = 0.5) p2 <- DimPlot(sce2, reduction = 'umap', group.by = "sample", cols = colour , label = F, pt.size = 0.5) p3 <- DimPlot(sce2, reduction = 'umap', group.by = "group",cols = colour , label = F, pt.size = 0.5) #简单的拼图 p1 / (p2 + p3)
二 细胞比例柱形图
绘制细胞比例柱形图的话,只需要根据metadata中的样本(分组)和细胞类型(cluster) ,table后获得长数据,然后ggplot2绘制即可。
#分样本 sample_table <- as.data.frame(table(sce2@meta.data$sample,sce2@meta.data$celltype)) names(sample_table) <- c("Samples","celltype","CellNumber") plot_sample<-ggplot(sample_table,aes(x=Samples,weight=CellNumber,fill=celltype))+ geom_bar(position="fill")+ scale_fill_manual(values=colour) + theme(panel.grid = element_blank(), panel.background = element_rect(fill = "transparent",colour = NA), axis.line.x = element_line(colour = "black") , axis.line.y = element_line(colour = "black") , plot.title = element_text(lineheight=.8, face="bold", hjust=0.5, size =16) )+labs(y="Percentage")+RotatedAxis() plot_sample #分组 group_table <- as.data.frame(table(sce2@meta.data$group,sce2@meta.data$celltype)) names(group_table) <- c("group","celltype","CellNumber") plot_group<-ggplot(sce2@meta.data,aes(x=group,fill=celltype))+ geom_bar(position="fill")+ scale_fill_manual(values=colour) + theme(panel.grid = element_blank(), panel.background = element_rect(fill = "transparent",colour = NA), axis.line.x = element_line(colour = "black") , axis.line.y = element_line(colour = "black") , plot.title = element_text(lineheight=.8, face="bold", hjust=0.5, size =16) )+labs(y="Percentage") plot_group plot_sample + plot_group + plot_layout(widths = c(2, 1))
ggplot2绘制就意味着可以根据自己的需求随意调整。
三 patchwork拼图
上两部分最后都涉及到了拼图,最终把所有结果合在一起,并添加A B的标识 ,建议通过小括号来区分优先级 。
简单的汇总一下pathwork的拼图规则:
(1)+ 运算符进行图形拼接(并不提供任何布局信息,并列)
(2)|:图形并列放置,即按行排列
(3) /:图形竖直堆叠,即按列排列
(4)plot_layout中的widths 和 heights 控制图形的 宽和高
(5)tag_level 用于控制标签的格式,格式包括:
- 1:阿拉伯数字
- a:小写字母
- A:大写字母
- i:小写罗马数字
- I:大写罗马数字