本系列推送旨在带领生信零基础的科研人一起入门单细胞(核)转录组数据分析。 CNS顶刊炫酷的UMAP图到底是怎么画的?作为单细胞分析的常规figure——UMAP层出不穷的美化方案只有你不敢想,没有做不到的。本文带你get单细胞UMAP还可以这么画,当然还有很多实用的单细胞分析配色分享哦! Introduction 在本系列的推送中,我们之前给大家分享了: ①单细胞(核)RNA测序的原理; ②基于Cellranger的上游分析; ③数据下载/导入/合并; ④数据质控(包括细胞质控和基因质控);并铺垫了细胞注释前几个数据处理技能(包括细胞周期矫正、去批次、差异分析)。 ⑤细胞注释 本期在上期的细胞注释分群的UMAP图基础上,进一步探讨UMAP图的美化方案及配色分享。 1. 浅谈UMAP图的美化方案
2. R作图 (单细胞) 的配色分享 书接上期(单细胞组学 | 第19期. 单细胞数据分析的核心环节,必学!),我们完成了细胞注释,并且绘制出了一幅经典的UMAP图(图1)。下面将循序渐进地介绍几种美化方案,希望给大家一些美化自己的UMAP图的灵感。 图1 在2017年Cell的一篇文章中,画出了包含椭圆置信区间的患者细胞分群t-SNE图,如图2所示。 图2 下面我们一起基于图1,一步步美化。绘制UMAP及之前的代码和上期相同。1)使用ggplot2 R包重新绘制UMAP图并获取每个细胞的坐标 df1=Hu_AO_db_QC2@reductions$umap@cell.embeddings %>% as.data.frame() %>% cbind(cluster=Hu_AO_db_QC2@meta.data$seurat_clusters)
plot1=ggplot(df1, aes(umap_1, umap_2, color=Hu_AO_db_QC2@meta.data$Major_celltype))+ geom_point(size = 0.01,alpha = 0.1) + # 设置点的大小为1 geom_point()+ theme_classic()+labs(title=1)
图3 细胞位置信息 图4 plot2=plot1 + stat_ellipse(aes(x = umap_1, y = umap_2, fill = Hu_AO_db_QC2@meta.data$Major_celltype), geom = "polygon", linetype=2, # 椭圆线 alpha = 0.25, #椭圆背景填充色不透明度 linewidth = 0.5, # 设置椭圆置信区间的边界线宽度 show.legend = FALSE, #去掉椭圆对应的图例 level = 0.95)+labs(title=2) #level置信区间
图5 colors2 <- c("#96C3D8", "#F5B375", "#C0937E", "#67A59B", "#A5D38F", "#8D75AF", "#F19294", "#E45D61", "#BDA7CB") plot3= plot2+ scale_fill_manual(values=colors2)+ scale_color_manual(values=colors2)+labs(title=4)
图6 美化方案2: 为每一群细胞添加轮廓线并更改图例 和美化方案1相似,首先要获取每个细胞的坐标,再给每群细胞加上轮廓线,不规则轮廓线的添加同样还是基于置信区间椭圆。此外,图例也进行了美化。 plotData <- as.data.frame(Hu_AO_db_QC2[["umap"]]@cell.embeddings) plotData$cluster <- Hu_AO_db_QC2@meta.data$Major_celltype plot4 = ggplot(plotData, aes(x = umap_1, y = umap_2, fill = Hu_AO_db_QC2@meta.data$Major_celltype, color = Hu_AO_db_QC2@meta.data$Major_celltype)) + stat_unchull(alpha = 0.25, size = 0.25, delta = 0.5) + stat_ellipse(level = 0.95) + geom_point(size = 0.1) + theme( aspect.ratio = 1, panel.background = element_blank(), panel.grid = element_blank(), axis.line = element_line(), )
美化方案3:对轮廓线的修饰并更改配色 set.seed(0816) col <- sample(RColorBrewer::brewer.pal(10, "Paired")) plot5 = ggplot(plotData, aes(x = umap_1, y = umap_2, fill = Hu_AO_db_QC2@meta.data$Major_celltype, color = Hu_AO_db_QC2@meta.data$Major_celltype)) + stat_unchull(alpha = 0.25, size = 0.25, lty = 2, delta = 0.5) + geom_point(size = 0.5, show.legend = FALSE) + theme( aspect.ratio = 1, panel.background = element_blank(), panel.grid = element_blank(), axis.line = element_line(arrow = arrow(type = "closed")), axis.title = element_text(hjust = 0.05, face = "italic",size = 14) ) + guides(color = FALSE, x = axis, y = axis) + guides(color = FALSE, x = axis, y = axis) + scale_x_continuous(breaks = NULL) + scale_y_continuous(breaks = NULL) + scale_fill_manual(values = col) + scale_color_manual(values = col))
图8 美化方案3:对UMAP坐标轴的修饰 1)对UMAP坐标轴进行缩放 一改以往一以贯之的坐标轴表现形式,通过对UMAP坐标轴进行缩放(截断轴),将坐标轴放到左下角,就会使UMAP图更加高级起来。 axis <- ggh4x::guide_axis_truncated( trunc_lower = unit(0, "npc"), trunc_upper = unit(3, "cm") ) Plot6 = ggplot(plotData, aes(x = umap_1, y = umap_2, fill = Hu_AO_db_QC2@meta.data$Major_celltype, color = Hu_AO_db_QC2@meta.data$Major_celltype)) + stat_unchull(alpha = 0.25, size = 0.25,delta = 0.5,lty = 1) + geom_point(size = 0.2, show.legend = FALSE) + theme( aspect.ratio = 1, panel.background = element_blank(), panel.grid = element_blank(), axis.line = element_line(arrow = arrow(type = "closed")), axis.title = element_text(hjust = 0.05, face = "italic")) + guides(color = FALSE, x = axis, y = axis) + scale_x_continuous(breaks = NULL) + scale_y_continuous(breaks = NULL))
图9 2)更改坐标轴标签字体大小 图10 美化方案5:只重点突出强调目的细胞群 单细胞UMAP图只标记特定细胞群,可以通过设置颜色实现。“刻意”安排好颜色顺序,将需要标注的群设置为需要的颜色,其他的群设置为灰色即可,如下图红色和蓝色细胞群。 colors <- c("grey","#FB8072","grey","grey","grey","grey","grey","grey","#7BAFDE") plot6 <- DimPlot(Hu_AO_db_QC2, reduction = "umap", group.by = "active.ident", label = TRUE) + scale_color_manual(values = colors) + NoLegend()
图11
美化方案6:AI实现手动对目标细胞群的圈选和注释 上述美化方案中分享了通过R来给细胞群添加置信椭圆和轮廓线,但涉及到更为复杂的不规则圈选时,使用R语言不仅费时难度系数高,还不一定能达到预期的圈选效果(我们这里也可以发现上述圈选时有两个细胞群未被圈住)。那我们该怎么办呢? 办法总比困难多,这时候AI(Adobe Illustrator)来出手!AI不仅可以进行科研绘图(详见科研工具系列合集),在单细胞绘图美化上,如添加指示箭头、对应文本标签等也是手到擒来。下面简单演示通过AI进行标签的添加,更多更具体的AI美化方法,如有需要,在之后的推送里会详细介绍。图12 图13 以上仅是介绍了简单的几种美化方案,下面分享一些实用的单细胞配色。 TS 在之前Bilibili“开心doctor”的壮观老师分享的公开课《R语言科研绘图之化繁为简》中,已经介绍了几种R作图的配色方案,下面我再来总结一下。 ① RColorBrewer包 网址: https:///#type=sequential&scheme=BuGn&n=3RColorBrewer包提供了三种类型的配色方案,用于在R中创建各种颜色调色板。顺序(Sequential)配色方案:适用于连续型数据,颜色随着数据值的变化而逐渐改变。通常用于表示数据的渐变。发散(Diverging)配色方案: 适用于呈现数据的变化趋势,数据集中在某一点附近的变化情况。通常用于显示数据的偏离或对比。定性(Qualitative)配色方案: 适用于离散型数据,每个类别的数据用不同的颜色表示。通常用于表示分类或分组的数据。 ② carto包 网址:https:///carto-colors/ 网址:https:///ggsci/articles/ggsci.htmlggsci包内有不同期刊配色汇总: 使用ggsci包中的配色美化的上述UMAP图如下所示。 library(ggsci) plot8 = DimPlot(Hu_AO_db_QC2, reduction = "umap", group.by = "active.ident", label = TRUE) + scale_color_npg(alpha = 0.1)
已有的配色方案往往不能满足生信可视化对美的要求,这时候美无极限、最具个性化的配色源于自己平时阅读文献时的配色积累加上合理搭配实现的。例如本篇中对UMAP图美化时的配色就是如此。在本公众号中专门有的科研配色系列(详见科研工具系列合集),帮助大家在阅读文献中积累配色,大家喜欢可以借鉴!下图是一些自定义配色方案供参考。 图15 以上就是本期推送的全部内容,大家对于推送内容有任何问题或建议可以在公众号菜单栏“更多--读者的话”栏目中提出,我们会尽快回复!参考文献: 1.Zheng C, Zheng L, Yoo JK, et al. Landscape of Infiltrating T Cells in Liver Cancer Revealed by Single-Cell Sequencing. Cell. 2017;169(7):1342-1356.e16. 期待已久~|R语言与组学互助交流群来啦! (欢迎大家入群交流~
|