跟SCI学umap图| ggplot2 绘制umap图,坐标位置 ,颜色 ,大小还不是你说了算

简介: 跟SCI学umap图| ggplot2 绘制umap图,坐标位置 ,颜色 ,大小还不是你说了算

本文首发于“生信补给站”公众号  https://mp.weixin.qq.com/s/dgsAjDnLOtzgejzzr4RcFw


umap/tsne图作为单细胞转录组的王牌图形之一,当seurat 或者 singleR 直接绘制的umap/tsne 图需要调整的时候,可能比较难调整,当然AI或者PS都可以办到 。但是本次主要分享使用ggplot2进行可视化,能比较方便的进行后期的微调 ,也学习回顾了ggplot2的基本参数。



有代码和数据的获取方式。

一 加载数据 R包


读取singleR释后的数据作为示例数据

#
library(SingleR)
library(Seurat)
library(tidyverse)
library(ggrepel)
#pbmc_tutorial_singleR.RData
load("pbmc_tutorial_singleR.RData")
#简单的查看
pbmc
#An object of class Seurat 
#13714 features across 2638 samples within 1 assay 
#Active assay: RNA (13714 features, 2000 variable features)
# 3 dimensional reductions calculated: pca, umap, tsne
seurat 包中`DimPlot`函数一行代码绘制umap图
DimPlot(pbmc, group.by = c("labels"),reduction = "umap")


二 ggplot2绘制umap图


2.1 查看绘制umap的数据

可以先str(pbmc),然后找需要的数据

umap图所需的数据就是每个cell的坐标以及cluster或者celltype信息,然后绘制点图
umap = pbmc@reductions$umap@cell.embeddings %>%  #坐标信息
  as.data.frame() %>% 
  cbind(cell_type = pbmc@meta.data$labels) # 注释后的label信息 ,改为cell_type
head(umap)
                   UMAP_1     UMAP_2 cell_type
AAACATACAACCAC-1 -4.577857   1.650203   T_cells
AAACATTGAGCTAC-1 -2.813911 -11.897462    B_cell
AAACATTGATCAGC-1 -1.684490   3.302480   T_cells
AAACCGTGCTTCCG-1 12.694498   2.098798  Monocyte
AAACCGTGTATGCG-1 -9.829201   3.982013   NK_cell
AAACGCACTGGTAC-1 -2.908319   1.249230   T_cells


2.2 ggplot2 绘制umap图

调整color,颜色列表来自于https://www.jianshu.com/p/67d2decf5517


allcolour=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")
p <- ggplot(umap,aes(x= UMAP_1 , y = UMAP_2 ,color = cell_type)) +
  geom_point(size = 1 , alpha =1 )  +
  scale_color_manual(values = allcolour)
p

看一下和文章SCI 截图的差别在哪?

嗯?好像差不多嘛 ,无非就是

A:主题部分(去掉背景,去掉网格线,去掉横纵坐标) ;

B:legend部分(调整legend ,去掉背景灰色,调整字体)

C:注释部分(坐标轴标到左下角,图中标示标签)三部分。


知道该调整哪些了,调整就一步步来就是了。



三 ggplot2-umap-调整


3.1 调整umap图 - theme

主题的调整比较简单,去掉网格线,坐标轴和背景色即可

p2 <- p  +
  theme(panel.grid.major = element_blank(), #主网格线
        panel.grid.minor = element_blank(), #次网格线
        panel.border = element_blank(), #边框
        axis.title = element_blank(),  #轴标题
        axis.text = element_blank(), # 文本
        axis.ticks = element_blank(),
        panel.background = element_rect(fill = 'white'), #背景色
        plot.background=element_rect(fill="white"))
p2


更多theme的设置详见ggplot2|theme主题设置,详解绘图优化-“精雕细琢”


3.2 调整umap图 - legend

legeng部分去掉legend.title后,调整标签大小,标签点的大小以及 标签之间的距离

p3 <- p2 +         
        theme(
          legend.title = element_blank(), #去掉legend.title 
          legend.key=element_rect(fill='white'), #
        legend.text = element_text(size=20), #设置legend标签的大小
        legend.key.size=unit(1,'cm') ) +  # 设置legend标签之间的大小
  guides(color = guide_legend(override.aes = list(size=5))) #设置legend中 点的大小 
p3


更多legend设置详见ggplot2 |legend参数设置,图形精雕细琢


3.3 调整umap图 - annotation

坐标轴放到左下角可以通过ggplot2添加箭头和文本实现。


p4 <- p3 + 
  geom_segment(aes(x = min(umap$UMAP_1) , y = min(umap$UMAP_2) ,
                   xend = min(umap$UMAP_1) +3, yend = min(umap$UMAP_2) ),
               colour = "black", size=1,arrow = arrow(length = unit(0.3,"cm")))+ 
  geom_segment(aes(x = min(umap$UMAP_1)  , y = min(umap$UMAP_2)  ,
                   xend = min(umap$UMAP_1) , yend = min(umap$UMAP_2) + 3),
               colour = "black", size=1,arrow = arrow(length = unit(0.3,"cm"))) +
  annotate("text", x = min(umap$UMAP_1) +1.5, y = min(umap$UMAP_2) -1, label = "UMAP_1",
           color="black",size = 3, fontface="bold" ) + 
  annotate("text", x = min(umap$UMAP_1) -1, y = min(umap$UMAP_2) + 1.5, label = "UMAP_2",
           color="black",size = 3, fontface="bold" ,angle=90) 
p4


那如果想把注释加到点之上怎么办呢?

(1)直接使用label 添加,需要先给每个cluster一个单独的坐标,本示例中使用此方法。

(2)text 根据cluster的位置,手动添加,需要尝试,倒是效果会好一些。


更多注释详见ggplot2-annotation|画图点“精”,让图自己“解释”


3.4 调整umap图 - repel - labels

1)计算每个cluster的median 坐标位置

cell_type_med <- umap %>%
  group_by(cell_type) %>%
  summarise(
    UMAP_1 = median(UMAP_1),
    UMAP_2 = median(UMAP_2)
  )

2)geom_label_repel 添加注释


使用ggrepel包的repel函数可以使注释的标签不重叠。

library(ggrepel)
p4 +
geom_label_repel(aes(label=cell_type), fontface="bold",data = cell_type_med,
                   point.padding=unit(0.5, "lines"))


3)去掉legend

p4 +
geom_label_repel(aes(label=cell_type), fontface="bold",data = cell_type_med,
                   point.padding=unit(0.5, "lines")) +
  theme(legend.position = "none")


OK ,以上就是使用ggplot2绘制umap图并进行调整的过程,这样就可以根据需求进行调整了。

相关文章
|
数据可视化 数据挖掘
Seurat 中的数据可视化方法
Seurat 中的数据可视化方法
|
数据可视化 搜索推荐 数据挖掘
使用ComplexHeatmap绘制复杂热图|Note2:单个热图(万字超详细教程)(中)
使用ComplexHeatmap绘制复杂热图|Note2:单个热图(万字超详细教程)(中)
1321 0
使用ComplexHeatmap绘制复杂热图|Note2:单个热图(万字超详细教程)(中)
|
9月前
|
存储 数据可视化 Python
单细胞RNA速率分析: scVelo入门教程
单细胞RNA速率分析: scVelo入门教程
单细胞RNA速率分析: scVelo入门教程
|
6月前
|
存储 数据可视化
单细胞分析: Scanpy 核心绘图 (3)
单细胞分析: Scanpy 核心绘图 (3)
单细胞分析: Scanpy 核心绘图 (3)
|
数据采集 数据挖掘 数据库
单细胞分析 | 使用 Monocle 3 进行发育轨迹分析
单细胞分析 | 使用 Monocle 3 进行发育轨迹分析
1378 0
单细胞分析 | 使用 Monocle 3 进行发育轨迹分析
|
机器学习/深度学习 人工智能 算法
高性价比发文典范——101种机器学习算法组合革新骨肉瘤预后模型
随着高通量测序技术的飞速发展和多组学分析的广泛应用,科研人员在探索生物学奥秘时经常遇到一个令人又爱又恼的问题:如何从浩如烟海的数据中挖掘出潜在的疾病关联靶点?又如何构建一个全面而有效的诊断或预后模型?只有通过优雅的数据挖掘、精致的结果展示、深入的讨论分析,并且辅以充分的湿实验验证,我们才能锻造出一篇兼具深度与广度的“干湿结合”佳作。
1634 0
高性价比发文典范——101种机器学习算法组合革新骨肉瘤预后模型
|
数据采集 数据可视化 数据挖掘
使用R语言进行主成分分析(PCA)
【4月更文挑战第26天】本文介绍了如何使用R语言进行主成分分析(PCA),包括安装必要包`stats`、`FactoMineR`和`factoextra`,数据预处理如标准化,使用`PCA()`函数执行PCA,以及通过`summary()`、`fviz_pca_ind()`和`fviz_pca_var()`进行结果解读和可视化。此外,还讨论了如何通过载荷系数解释主成分,强调PCA在数据降维和探索数据结构中的作用。
1338 1
|
搜索推荐
代码分享|GPL平台没有基因注释什么办?别慌,基因ID注释万能公式!
本文介绍了处理无基因注释的GEO数据集的方法。当遇到GPL平台无基因注释时,可以通过以下步骤解决:1) 查看数据集补充文件中是否已有注释矩阵;2) 使用搜索引擎或官网查找相关资源;3) 如数据集较新,尝试联系平台官方;4) 利用已有经验进行转换。文中通过多个GSE示例详细解释了如何处理不同情况,并提醒读者注意检查数据集中可能隐藏的注释信息。作者提供了转换ID的代码,并在公众号“多线程核糖体”分享了相关资源。
2555 0
|
数据挖掘 atlas 数据库
单细胞工具箱|singleR-单细胞类型自动注释(含数据版)
单细胞工具箱|singleR-单细胞类型自动注释(含数据版)
2804 0
|
数据可视化 Serverless
scRNA分析|使用AddModuleScore 和 AUcell进行基因集打分,可视化
scRNA分析|使用AddModuleScore 和 AUcell进行基因集打分,可视化
2690 0