1. 为什么你需要这张图?单细胞数据分析的“黄金搭档”
如果你正在处理单细胞转录组测序数据,我猜你肯定遇到过这个经典问题:手头有好几个样本,比如来自不同处理组、不同时间点或者不同病人的数据,你已经费了老大劲完成了细胞聚类和注释,知道了每个样本里都有哪些细胞类型。接下来,你想直观地展示不同样本之间细胞组成的差异和变化趋势。这时候,你可能会想到堆叠柱状图——它确实能清晰地展示每个样本内部各种细胞类型的比例构成,一眼就能看出哪个样本里T细胞多,哪个样本里巨噬细胞占主导。
但是,堆叠柱状图有个小遗憾。当样本按照某个顺序(比如时间序列、疾病进程)排列时,你虽然能看到每个“点”上的静态比例,却很难直观地追踪某一种细胞类型(比如那群关键的效应T细胞)在不同样本间是如何“流动”变化的:它是从样本A到样本B增多了还是减少了?它的“去向”和“来路”是怎样的?这种动态的、连续的变化趋势,正是理解生物学过程的关键。
这时候,桑基图就该登场了。桑基图最初用于展示能量、物质或资金的流动,它的核心魅力就在于那些优雅的、像河流一样的“流线”,能够清晰呈现事物在不同状态间的转换和流量。把桑基图和堆叠柱状图组合在一起,就诞生了我们今天要聊的“组合图”。静态的柱子告诉你每个样本的“家底”(组成比例),动态的流线则像一条条纽带,把不同样本间的同一种细胞类型连接起来,让你一眼就能看出这种细胞在样本序列中的兴衰起伏。这种“动静结合”的可视化方式,在展示时间序列实验、疾病进展队列、治疗前后对照等场景的数据时,尤其有说服力。我自己的好几个项目里,用这种图向合作者展示细胞群体动态变化时,总能获得“一目了然”的好评。
2. 动手之前:准备好你的“弹药库”
工欲善其事,必先利其器。在R语言里绘制这种组合图,我们主要依靠两个强大的包:ggplot2 和 ggalluvial。ggplot2 是R语言可视化的基石,你应该已经很熟悉了,我们用它来绘制堆叠柱状图。而 ggalluvial 包则是专门为了绘制冲积图(Alluvial Diagram)和桑基图(Sankey Diagram)而生的,它完美地融入了 ggplot2 的语法体系,让我们能用熟悉的“图层叠加”思想来绘制流线。
所以,第一步就是确保你的R环境里安装了这两个包。如果你还没安装,打开RStudio的控制台,运行下面这两行命令:
install.packages("ggplot2")
install.packages("ggalluvial")
安装完成后,在每次脚本的开头,记得用 library() 函数把它们加载进来。另外,处理单细胞数据,Seurat 对象和 dplyr 包的数据操作也是我们的好帮手,一并加载。
library(Seurat)
library(ggplot2)
library(dplyr)
library(ggalluvial)
接下来是最关键的一步:准备绘图数据。我们的数据需要从一个标准的Seurat对象中提取。假设你的Seurat对象名叫 sce.integrated,它里面至少应该包含两列关


415

被折叠的 条评论
为什么被折叠?



