You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

求助:基于Seurat元数据绘制的Alluvial Plot未显示细胞通量

解决Alluvial Plot无法显示细胞通量的问题

问题背景

基于Seurat对象元数据绘制两种基因型(geno)间细胞集群(cluster)通量的Alluvial图,但当前代码生成的图无预期的通量展示效果。

问题诊断

当前代码的核心错误集中在数据格式与ggplot参数映射:

  • alluvium参数误用:使用唯一细胞ID(num)作为连接变量,导致每个细胞单独生成一条流,所有流重叠后无法区分集群间的通量关系。
  • y参数类型错误:设置为分类变量cluster,但Alluvial图的y轴需要对应连续型的细胞计数,才能体现分组规模差异。
  • 原始数据未聚合:以单个细胞为行的原始数据无法直接用于展示集群层面的通量,需先统计基因型-集群组合的细胞数量。

修正方案

1. 预处理:聚合细胞计数

先按基因型和集群分组,统计每组的细胞数量:

library(dplyr)

# 聚合数据:统计每个geno-cluster组合的细胞数
meta_agg <- meta %>%
  group_by(geno, cluster) %>%
  summarize(count = n(), .groups = "drop")

2. 修正绘图代码

使用聚合后的数据,调整参数映射以正确展示通量:

library(ggplot2)
library(ggalluvial) # 需先安装:install.packages("ggalluvial")

ggplot(meta_agg,
       aes(x = geno, 
           stratum = cluster, 
           alluvium = cluster, # 用cluster关联不同基因型间的同集群流
           y = count, # y轴对应细胞数量,体现分组规模
           fill = cluster, 
           label = cluster)) +
  scale_x_discrete(expand = c(.1, 0)) +
  geom_flow(width = 1/4, color = "white") # 白色边框增强流的辨识度
  geom_stratum(alpha = .5, width = 1/4) +
  geom_text(stat = "stratum", size = 4) +
  labs(title = "基因型-集群细胞通量分布", y = "细胞数量") +
  theme(legend.position = "right")

关键说明

  • 依赖包要求:geom_flow和geom_stratum属于ggalluvial包,必须先安装并加载。
  • alluvium参数作用:指定连接不同x轴分组的变量,用cluster可让同一集群在不同基因型间形成连贯的流,直观展示细胞数量变化。
  • y轴逻辑:连续型计数变量决定了流的宽度和分层块的高度,是体现通量差异的核心。

内容的提问来源于stack exchange,提问作者jonny jeep

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.10 04:55:17