# 使用 ggsc 绘制 Seurat 对象

Seurat 包自带了一些绘图函数,虽然也是基于 ggplot2 的,但是扩展性其实没那么强

正好 Y 叔写了个包 ggsc,虽然已经有基本的使用教程,但还是有些常用的应用场景需要自己探索一下:

# 基本绘图

对我个人而言,基本绘图可以这样写

Idents(seurat_object) <- "celltype"
p <- sc_dim(seurat_object, reduction = "umap") + 
  sc_dim_geom_label(geom = shadowtext::geom_shadowtext, color = '#5D478B', bg.color = 'white', check_overlap = TRUE) + 
  ggtitle("") + scale_color_viridis_d(option = "H") + guides(color = guide_legend(override.aes = list(size = 5)))
ggsave("UMAP_celltype.pdf", plot = p, height = 5, width = 8)
ggsave("UMAP_celltype.png", plot = p, height = 5, width = 8)

以上代码用于绘制细胞注释后的 UMAP 图,思路是:

  1. 设置 Seurat 对象当前的 Ident,这样默认绘图就会按照设置的当前 Ident 来着色
  2. sc_dim_geom_label 添加标签
  3. ggtitle 添加图像标题
  4. scale_color_viridis_d(option = "H") 使用 Viridis 颜色系统的离散调色板, H 调色板是测试下来最好看的一个颜色系列
  5. guides 参数用于调整图例,此处我修改了点的大小

其中 shadowtext 包也是 Y 叔写的,用于给文字添加阴影以使标签更美观,被用于范例

但当你的分群太过靠近时,如果不加 check_overlap = TRUE 参数,标签可能会重叠

但实际上,加上 check_overlap = TRUE 参数也并没有什么用......

这是 ggplot2 的一个参数,当加上时他会把重叠标签隐藏......(不是哥们

所以我们换用 ggrepel 这个简单又强势的包:

p <- sc_dim(seurat_object, reduction = "umap") +
  sc_dim_geom_label(geom = ggrepel::geom_text_repel, color = '#5D478B', bg.color = 'white') +
  ggtitle("") + scale_color_viridis_d(option = "H") + guides(color = guide_legend(override.aes = list(size = 5)))

# mapping 参数的使用方法

教程中对于 mapping 参数并没有讲的很清楚。它需要的其实是一个 aes

aes (aesthetic 的缩写)用于在 ggplot2 中定义美学映射。它将数据变量映射到图形的美学属性上。例如,你可以将数据框中的一个数值变量映射到图形的 x 轴位置、y 轴位置、颜色、大小、形状等美学元素。例如:

mapping <- aes(color = celltype)
p <- sc_dim(seurat_object, reduction = "umap", mapping = mapping)

这段代码同样会按照细胞类型来着色,与以下代码其实效果上是一样的:

Idents(seurat_object) <- "celltype"
p <- sc_dim(seurat_object, reduction = "umap")

如果不设置 mapping 参数,会使用默认的映射

# 分面