查看原文
其他

左下角自定义箭头坐标轴 (批量添加和美化)

JunJunLab 老俊俊的生信笔记 2022-08-27


我要一台蓝色大大的飞机

1引言

前面讲到如何在 UMAP/t-SNE 聚类图左下角添加箭头坐标轴给了个示例,见 UMAP/t-SNE 左下角自定义箭头坐标轴

  • DimPlot 有时候经常会有多个样本整合分析,需要绘制多个这样的图形。
  • 可视化多个基因的 FeaturePlot 如何添加?

再用上次推文的函数一个一个画那就太麻烦了,当然写个循环也不是不可以。这次重新改写函数,使其可以用于多个样本的 DimPlot 和多个基因的 FeaturePlot

此外在 Y 叔 的批评指导下, 靠近 最少墨水原则, 我们可以在多个分组图的左下角只需要添加一个坐标轴即可,简化过多的坐标轴干扰。

2加载数据

这里提取 4 个数据进行测试:

library(patchwork)
library(Seurat)
library(ggplot2)
library(data.table)
library(tidyverse)
library(ggsci)
library(patchwork)
library(reshape2)

# load rds
sce <- readRDS('ythdf123_final.rds')

unique(sce$orig.ident)
# [1] ST1  ST2  ST3  ST4  ST5  ST6  ST7  ST8  SPG1 SPG2 SPG3 INT1 INT2 INT3 INT4 INT5
# [17] SER1 SER2 SER3 SER4 SER5 SER6 SER7 SER8 INT6
# 25 Levels: INT1 INT2 INT3 INT4 INT5 INT6 SER1 SER2 SER3 SER4 SER5 SER6 SER7 ... ST8

# subset data
tmp <- subset(x = sce,subset = orig.ident == c('ST1','ST2','ST3','ST4'))

unique(tmp$orig.ident)
# [1] ST1  SPG1 INT1 SER1
# 25 Levels: INT1 INT2 INT3 INT4 INT5 INT6 SER1 SER2 SER3 SER4 SER5 SER6 SER7 ... ST8

默认的 Dimplot:

# dimplot
# umap
DimPlot(tmp, reduction = "umap",split.by = 'orig.ident') +
  NoLegend()

或者 tsne:

# tsne
DimPlot(tmp, reduction = "tsne",split.by = 'orig.ident') +
  NoLegend()

默认的 FeaturePlot:

# FeaturePlot
FeaturePlot(object = tmp,features = c("Actb","Ythdc1""Ythdf2"),
            split.by = 'orig.ident')

3Dimplot 美化

定义函数:

# define function
AddCornerAxes <- function(object,reduction = 'umap',nrow = 1,
                          relLength = 0.3,relDist = 0.07,
                          axes = 'mul',legendPos = 'right',
                          lineTextcol = 'black'){...}

参数解释:

  • object: seurat 对象名称。
  • reduction: 降维类型。
  • relLength: 坐标轴线的相对长度。
  • relDist: 轴标签离轴的距离。
  • nrow: 图的行数。
  • axes: 左下角的坐标轴类型,mul为每个子图都添加,one则第一个图添加。
  • lineTextcol: 坐标轴字体和线的颜色。
  • legendPos: 图例的位置。

默认测试:

# test plot
# umap
AddCornerAxes(object = tmp,reduction = 'umap',
              nrow = 1,legendPos = 'right',
              relLength = 0.5,relDist = 0.15)

改变线的颜色:

# line color
AddCornerAxes(object = tmp,reduction = 'umap',
              nrow = 1,legendPos = 'right',
              relLength = 0.5,relDist = 0.15,
              lineTextcol = 'grey50')

只添加一个坐标轴:

# one axes
AddCornerAxes(object = tmp,reduction = 'umap',
              nrow = 1,legendPos = 'right',
              relLength = 0.5,relDist = 0.15,
              axes = 'one')

tsne,绘制两行:

# tsne
AddCornerAxes(object = tmp,reduction = 'tsne',
              nrow = 2,legendPos = 'right',
              relLength = 0.5,relDist = 0.15)

tsne 一行,一个坐标轴:

# one axes
AddCornerAxes(object = tmp,reduction = 'tsne',
              nrow = 1,legendPos = 'right',
              relLength = 0.5,relDist = 0.15,
              axes = 'one')

4FeaturePlot enhanced

定义函数:

# define function
FeatureCornerAxes <- function(object,reduction = 'umap',features,
                          relLength = 0.3,relDist = 0.07,
                          low = 'lightgrey',high = 'red',
                          axes = 'mul',legendPos = 'right',
                          RowSample = 1,ColGene = 1,
                          lineTextcol = 'black'){...}

参数解释:

参数大部分和上面差不多:

  • features: 绘制的基因名。
  • low/high: 点的颜色。
  • RowSample: 按样本绘图的行数。
  • ColGene: 按基因绘图的行数。

测试:

# test plot
# umap
FeatureCornerAxes(object = tmp,reduction = 'umap',
                  legendPos = 'right',
                  features = c("Actb","Ythdc1""Ythdf2"),
                  relLength = 0.5,relDist = 0.15,
                  RowSample = 1,ColGene = 1)

轴线颜色:

# line color
FeatureCornerAxes(object = tmp,reduction = 'umap',
                  legendPos = 'right',
                  features = c("Actb","Ythdc1""Ythdf2"),
                  relLength = 0.5,relDist = 0.15,
                  RowSample = 1,ColGene = 1,
                  lineTextcol = 'grey50')

保留一个轴:

# one axes
FeatureCornerAxes(object = tmp,reduction = 'umap',
                  legendPos = 'right',
                  features = c("Actb","Ythdc1""Ythdf2"),
                  relLength = 0.5,relDist = 0.15,
                  RowSample = 1,ColGene = 1,
                  axes = 'one')

tsne 的一个轴,改变点颜色:

# one axes
FeatureCornerAxes(object = tmp,reduction = 'tsne',
                  legendPos = 'right',
                  features = c("Actb","Ythdc1""Ythdf2"),
                  relLength = 0.5,relDist = 0.15,
                  RowSample = 1,ColGene = 1,
                  high = '#009966',
                  axes = 'one')

如果想要更多的调整,也可以在函数里添加更多的参数来实现,按需修改即可。

5结尾

个人觉得保留一个坐标轴会更加简洁一些,在视觉上也不会有太多困扰,感谢 Y 叔的指正和建议!

微信发我 15 元, 我把代码和数据分享给你!




  老俊俊生信交流群 (微信交流群满200人后需收取20元入群费用)


老俊俊微信:


知识星球:



今天的分享就到这里了,敬请期待下一篇!

最后欢迎大家分享转发,您的点赞是对我的鼓励肯定

如果觉得对您帮助很大,赏杯快乐水喝喝吧!



  





单细胞绘图数据提取个性化绘图

UMAP/t-SNE 左下角自定义箭头坐标轴

优雅的可视化细胞群 Marker 基因

GENES & DEVELOPMENT 单细胞结果复现

加速你的单细胞数据分析

Cell 教我学画图之累积分布曲线

Molecular Cell 文章 ribosome pausing 结果复现 (终)

Molecular Cell 文章 ribosome pausing 结果复现 (四)

Molecular Cell 文章 ribosome pausing 结果复现 (三)

Molecular Cell 文章 ribosome pausing 结果复现 (二) (PCR 去重)

◀..

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存