第四章 堆叠柱状图陷阱:顺序、百分比与总丰度

堆叠柱状图,咱们做微生物组、转录组、代谢组的人几乎天天见。但我得说,这玩意儿是“看着简单,坑最多”的图表类型之一。我自己刚开始画的时候也翻过车,后来才慢慢摸清楚里面的门道。今天咱们就把它拆开揉碎了,看看堆叠柱状图常见的三个大坑。

核心问题:堆叠柱状图实际上是在“分蛋糕”,但蛋糕的大小、切的顺序、以及你关注的是“相对占比”还是“绝对数量”,都会直接影响解读结论。

4.1 陷阱一:堆叠顺序影响视觉解读

你想想看,一组堆叠柱里,哪个组分最容易被注意到?通常是底部的和顶部的。中间那些夹层,尤其是厚度变化的,视觉上很难快速比较。我遇到过一位合作者,他把丰度最高的物种放中间,结果汇报时所有人都觉得那个物种含量很少——因为被上下夹住了。

为什么堆叠顺序这么敏感?

  • 人眼对色谱两端对齐的区域更敏感(底部基线、顶部齐平)。
  • 中间区域的上下边界都不平,视觉对比全靠“脑补”。
  • 如果组分数量>5,中间段几乎无法做任何有效比较。

我的个人习惯:把最重要、需要纵向对比的组分放在底部(贴紧基线)或顶部(齐平天花板)。次要组分放中间。如果所有组分都重要,就别用堆叠柱状图了,改用热图或气泡图吧。

具体操作建议:

# R ggplot2 中设置堆叠顺序
# 将目标组设为第一个因子水平
sample_data$Phylum <- factor(sample_data$Phylum, 
                             levels = c("Firmicutes", "Bacteroidetes", "Proteobacteria", "others"))
ggplot(data, aes(x=Sample, y=Abundance, fill=Phylum)) +
  geom_bar(stat="identity", position="stack")

4.2 陷阱二:百分比堆叠带来虚假的“此消彼长”

这是最常见的误导方式。你把每个样本归一化到100%,然后看相对丰度变化。表面上,A菌在样本1占40%,样本2占20%——好像下降了。但有可能样本1总菌数少,样本2总菌数多,A菌的绝对数量其实没变甚至增加了。

我曾经在审稿时看到过一张图:作者用百分比堆叠展示了处理组和对照组,结论是某个有益菌在处理组下降了。但我算了一下他补充材料里的绝对定量数据,那个菌的绝对数量根本没有变化,只是其他菌大量增殖导致百分比被稀释了。这就是经典的“分母效应”。

警告:百分比堆叠柱状图只能展示“相对组成的变化”,不能直接推断绝对丰度的增减。如果你的实验有绝对定量数据,一定要同时展示绝对丰度或者用“内外嵌套”的图表形式。

如何判断是否被误导:

  1. 问自己:总丰度在不同样本间是否恒定?
  2. 如果总丰度差异很大,百分比变化可能只是“别人的涨跌”造成的假象。
  3. 最好的做法——百分比图和绝对数图同时呈现,或者使用中心化对数比变换。

举个栗子:假设样本A总reads=1000,菌X=200(20%);样本B总reads=500,菌X=150(30%)。百分比上看菌X增加了10%,但绝对数量从200降到了150。嗯,这里要注意——百分比堆叠可能掩盖真实下降。

我的经验:如果非要展示百分比堆叠,建议在图上标注总丰度标签(比如柱子上方写总reads数),或者用分面图把绝对丰度和百分比并排。读者至少能有对比参照。

4.3 陷阱三:总丰度比较困难——堆叠柱状图天生不适合做“组间差异检验”

堆叠柱状图每个柱子分成多个组分,但你很难一眼看出不同组之间某个组分的差异是否显著。为什么?因为组分之间是“此消彼长”的,一个组分的变化会影响其他组分的占比,你的统计检验没法直接套用简单的t检验。

我习惯的做法:

  • 如果想比较特定组分在两组间的差异,单独拉出来画箱线图+散点。
  • 如果想比较整体群落结构,用PCoA或NMDS。
  • 堆叠柱状图只作为“全局概览”,别用它做统计推断。

有些同学喜欢在堆叠柱状图上标星号——A组Firmicutes比B组显著高。但问题是,这个星号是比谁的?比总丰度?还是比百分比?如果是百分比,别忘了闭合效应:一个组分上去,其他组分必然下去。你的显著性可能来自数学约束而不是生物学差异。

避坑指南:如果必须在堆叠图上标注显著性,请使用“组成数据专用检验”,比如ALDEx2、ANCOM-BC、或者Dirichlet回归。这些方法能正确处理成分数据的闭合效应。不要直接用Wilcoxon做堆叠组分的差异比较。

4.4 知识脉络:堆叠柱状图的三个陷阱

下面这张图帮你捋清整体逻辑。三个陷阱分别对应:视觉顺序、归一化误导、比较困难。每个陷阱都有对应的解决思路。

堆叠柱状图三大陷阱 陷阱1:堆叠顺序 视觉层级影响解读 陷阱2:百分比误导 相对变化≠绝对变化 陷阱3:比较困难 组分间不是独立变量 中间组分被忽视 基线对齐差异难辨 分母效应导致假阳性 此消彼长假象 统计检验不可靠 闭合效应干扰 解决方案 重要组分放底部/顶部 | 同时展示绝对丰度 | 专用成分数据检验 记住:堆叠柱状图适合“概览”,不适合“推断” 如果结论依赖于某个组分的比较,请使用专用图表和统计方法

4.5 实战排查清单

每次出堆叠柱状图,我都用下面这个清单自查一遍,免得挂科。

检查项 自查问题 建议
顺序 最重要的组放在最容易比较的位置了吗? 放底部或顶部,不要埋中间
归一化 总丰度在各组间是否一致?趋势是否被“分母”扭曲? 如果总丰度差异大,同时做绝对丰度图
统计 你在图上标注的显著性是否使用了成分数据对应的检验? 用ALDEx2/ANCOM-BC,别用普通t检验
可读性 组分数量是否过多(>8个)?颜色是否容易区分? 合并稀有种,或改用其他图形式

最终忠告:堆叠柱状图是讲故事的图,不是做统计的图。如果你要发文章,审稿人很可能会盯着你的堆叠图问:“能否证明这个差异不是由分母效应引起的?”——我当年就被问过,还好我提前准备了绝对定量数据,不然就白费了。