首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >🤩 SeuratExtend | 基于Seurat的强大拓展包!~(二)(基础可视化)

🤩 SeuratExtend | 基于Seurat的强大拓展包!~(二)(基础可视化)

作者头像
生信漫卷
发布2025-11-13 18:32:35
发布2025-11-13 18:32:35
10
举报

写在前面

本期内容:👇

  • VlnPlot2:一行命令完成点样式/分组拆分/均值&中位线/离群点隐藏/统计检验
  • ClusterDistrBar / ClusterDistrPlot:一眼看懂不同样本/条件的群集分布(百分比/绝对数、堆叠/非堆叠、横/纵向可切换);
  • WaterfallPlot:用于通路打分或基因集差异“瀑布图”(支持显著性过滤、Log2/Log10、TopN);
  • VolcanoPlot:单细胞友好的火山图(支持 t-score 作为 Y 轴,避免“大样本 p 值挤顶”)。

用到的包

代码语言:javascript
复制
rm(list = ls())
library(Seurat)
library(SeuratExtend)

示例数据

代码语言:javascript
复制
pbmc

小提琴图

基本用法

代码语言:javascript
复制
genes <- c("CD3D","CD14","CD79A")

VlnPlot2(pbmc, features = genes, ncol = 1)

点随机分布!~🫠

代码语言:javascript
复制
VlnPlot2(pbmc, features = genes, violin = FALSE, pt.style = "quasirandom", ncol = 1)

不显示点!~😀

代码语言:javascript
复制
VlnPlot2(pbmc, features = genes, pt = FALSE, ncol = 1)

不显示outlier!~😅

代码语言:javascript
复制
VlnPlot2(pbmc, features = genes, pt = FALSE, hide.outlier = TRUE, ncol = 1)

Outline Style

代码语言:javascript
复制
VlnPlot2(pbmc, features = genes, style = "outline", ncol = 1)

添加平均线和中位数线

代码语言:javascript
复制
lowExprGenes <- c("CCR7", "IL7R", "TCF7")
VlnPlot2(pbmc, 
         features = lowExprGenes, 
         show.mean = TRUE,      # Show mean and median lines
         mean_colors = c("red", "blue"),  # Colors for mean and median
         cols = "light",        # Light color scheme for better visibility
         ncol = 1)

拆分可视化

代码语言:javascript
复制
VlnPlot2(pbmc, features = genes, group.by = "cluster", split.by = "orig.ident")

子集分析

代码语言:javascript
复制
cells <- colnames(pbmc)[pbmc$cluster %in% c("B cell", "Mono CD14", "CD8 T cell")]
VlnPlot2(pbmc, features = genes, group.by = "cluster", cells = cells)

统计分析

wilcox.test!~

代码语言:javascript
复制
VlnPlot2(pbmc, 
         features = genes, 
         group.by = "cluster", 
         cells = cells,
         stat.method = "wilcox.test", 
         hide.ns = TRUE)

t.test!~

代码语言:javascript
复制
VlnPlot2(pbmc, 
         features = genes, 
         group.by = "cluster", 
         cells = cells,
         stat.method = "t.test", 
         comparisons = list(c(1,2), c(1,3)), 
         hide.ns = FALSE)

使用矩阵作为输入文件

这里我们把基因集富集分析的AUCell分数作为输入文件。😘

代码语言:javascript
复制
# Perform gene set analysis
pbmc <- GeneSetAnalysis(pbmc, genesets = hall50$human)
matr <- pbmc@misc$AUCell$genesets

# Plot the first three pathways
VlnPlot2(matr[1:3,], f = pbmc$cluster, ncol = 1)

可视化Cluster分布

基本用法

代码语言:javascript
复制
ClusterDistrBar(origin = pbmc$orig.ident, cluster = pbmc$cluster)

绝对细胞计数

代码语言:javascript
复制
ClusterDistrBar(origin = pbmc$orig.ident, cluster = pbmc$cluster, percent = FALSE)

垂直方向

代码语言:javascript
复制
ClusterDistrBar(origin = pbmc$orig.ident, cluster = pbmc$cluster, flip = FALSE, reverse_order = FALSE)

非堆叠显示

代码语言:javascript
复制
ClusterDistrBar(origin = pbmc$orig.ident, 
                cluster = pbmc$cluster, 
                flip = FALSE, 
                stack = FALSE)

归一化比例

代码语言:javascript
复制
ClusterDistrBar(origin = pbmc$orig.ident, cluster = pbmc$cluster, rev = TRUE, normalize = TRUE)

比较不同分组之间的细胞分布

代码语言:javascript
复制
# Compare cluster distribution between conditions
ClusterDistrPlot(
  origin = pbmc$sample_id,
  cluster = pbmc$cluster,
  condition = pbmc$condition
)

瀑布图

基本用法

代码语言:javascript
复制
pbmc <- GeneSetAnalysis(pbmc, genesets = hall50$human)
matr <- pbmc@misc$AUCell$genesets

WaterfallPlot(matr, f = pbmc$cluster, ident.1 = "Mono CD14", ident.2 = "CD8 T cell")

segment样式

代码语言:javascript
复制
# Create a plot using the new segment style
WaterfallPlot(
  matr,
  f = pbmc$cluster,
  ident.1 = "Mono CD14",
  ident.2 = "CD8 T cell",
  style = "segment",
  color_theme = "D"
)

按显著性过滤

代码语言:javascript
复制
WaterfallPlot(
  matr, 
  f = pbmc$cluster, 
  ident.1 = "Mono CD14", 
  ident.2 = "CD8 T cell", 
  len.threshold = 2)

比较基因表达

代码语言:javascript
复制
genes <- VariableFeatures(pbmc)[1:70]
WaterfallPlot(
  pbmc, 
  group.by = "cluster", 
  features = genes,
  ident.1 = "Mono CD14", 
  ident.2 = "CD8 T cell", 
  length = "logFC")

仅显示差异表达较大的基因!~🥸

代码语言:javascript
复制
WaterfallPlot(
  pbmc, 
  group.by = "cluster", 
  features = genes,
  ident.1 = "Mono CD14", 
  ident.2 = "CD8 T cell", 
  length = "logFC",
  top.n = 20)

使用Log2Log10展示倍数变化。😀

代码语言:javascript
复制
# Using log base 2 for fold change calculations
WaterfallPlot(
  pbmc, 
  group.by = "cluster", 
  features = genes,
  ident.1 = "Mono CD14", 
  ident.2 = "CD8 T cell", 
  length = "logFC",
  log.base = "2",    # Use log2 instead of natural log
  top.n = 20)

火山图

基本用法

代码语言:javascript
复制
VolcanoPlot(pbmc, 
            ident.1 = "B cell",
            ident.2 = "CD8 T cell")

自定义阈值

代码语言:javascript
复制
VolcanoPlot(
  pbmc,
  ident.1 = "B cell",
  ident.2 = "CD8 T cell",
  x.threshold = 0.5,    # Log fold change threshold
  y.threshold = 2     # -log10(p-value) threshold
)

使用 t-score代替p值

在单细胞分析中使用t-scor代替p值作为y轴`特别有用。🥳

由于单细胞数据集中的细胞数量较多,p 值通常变得极其显著,导致许多基因在使用-log10(p 值)时聚集在 y 轴的顶部。🧐

这使得很难区分在技术上都非常重要的基因。🧬

t-score提供了更好的分布,并有助于创建信息更丰富的可视化效果。🙊

代码语言:javascript
复制
VolcanoPlot(
  pbmc,
  ident.1 = "B cell",
  ident.2 = "CD8 T cell",
  y = "tscore"
)

使用 Log2 或 Log10 倍数变化

代码语言:javascript
复制
VolcanoPlot(
  pbmc,
  ident.1 = "B cell",
  ident.2 = "CD8 T cell",
  log.base = "2"    # Use log2 instead of natural log
)

使用矩阵作为输入文件

代码语言:javascript
复制
# Using the previously calculated pathway enrichment scores
VolcanoPlot(
  matr,
  f = pbmc$cluster,
  ident.1 = "B cell",
  ident.2 = "Mono CD14",
  x.quantile = 0.8,
  y.quantile = 0.8,
  top.n = 5)
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2025-11-08,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 生信漫卷 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 写在前面
  • 用到的包
  • 示例数据
  • 小提琴图
    • 基本用法
    • Outline Style
    • 添加平均线和中位数线
    • 拆分可视化
    • 子集分析
    • 统计分析
    • 使用矩阵作为输入文件
  • 可视化Cluster分布
    • 基本用法
    • 绝对细胞计数
    • 垂直方向
    • 非堆叠显示
    • 归一化比例
    • 比较不同分组之间的细胞分布
  • 瀑布图
    • 基本用法
    • segment样式
    • 按显著性过滤
    • 比较基因表达
  • 火山图
    • 基本用法
    • 自定义阈值
    • 使用 t-score代替p值
    • 使用 Log2 或 Log10 倍数变化
    • 使用矩阵作为输入文件
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档