引言Introduction

差异分析做完了,结果却不会解释。火山图一眼看不懂,上下调阈值怎么定也不清楚。这是很多医学生、医生和科研人员常见的卡点。真正决定图是否可信的,不是“画出来”,而是参数是否设置合理。
差异分析火山图示意图,标出log2FC、-log10P值坐标轴,以及上调、下调、无显著变化三类点的分布

1. 火山图是什么,为什么它是差异分析的核心图

1.1 一张图同时回答“变没变”和“变多少”

火山图是差异分析最常用的可视化之一。它把每个基因的变化幅度和统计显著性放在同一张图上。横轴通常是 log2 fold change ,纵轴通常是 -log10(P value) 或 ** -log10(padj)**。

横轴看效应大小,纵轴看可信度。
这也是火山图比单纯表格更适合快速筛选候选基因的原因。点越靠左右两侧,变化越大。点越靠上,显著性越强。

1.2 火山图适合哪些分析场景

火山图常见于以下场景:

  • 转录组差异表达分析。
  • 芯片数据差异分析。
  • 蛋白组或代谢组的分组比较。
  • 单基因处理前后的筛选结果展示。

对于论文和汇报来说,火山图的价值不只是“好看”。它能快速告诉读者:

  • 上调基因有多少。
  • 下调基因有多少。
  • 差异信号是否集中。
  • 是否存在明显的偏倚。

如果火山图两侧分布失衡,往往提示样本分组、归一化或阈值设置需要重新检查。

2. 火山图差异分析的三个核心参数

2.1 log2FC决定“变化幅度”

log2FC是最关键的效应量指标。它表示两个组之间表达量的倍数变化,取对数后更便于比较。

常用解释如下:

  • log2FC = 1,表示上调2倍。
  • log2FC = -1,表示下调2倍。
  • log2FC = 2,表示上调4倍。
  • log2FC = -2,表示下调4倍。

在课程和实操中,常见阈值是 |log2FC| > 1 ,也就是变化超过2倍。部分分析会使用 |log2FC| > 2 ,即变化超过4倍。

阈值越严格,筛出的基因越少,但更稳健。
阈值越宽松,候选基因更多,但假阳性风险更高。

2.2 p值或padj决定“显著性”

火山图的另一核心是显著性。常见做法是使用 p值或校正后的 p 值 padj。

在高通量数据中,同时检测成千上万个基因时,多重检验问题非常突出。
因此,更推荐使用 padj,而不是原始 p 值。

常见阈值是:

  • padj < 0.05。
  • 有些研究会采用 padj < 0.01,提高严格性。

如果只用原始 p 值,假阳性会明显增加。
这在样本量较大、比较基因较多时尤其明显。

2.3 上下调分类变量决定颜色和解释

火山图通常将点分成三类:

  • Up,上调。
  • Down,下调。
  • NS,无显著变化。

分类逻辑一般是:

  1. 先判断 padj 是否小于阈值。
  2. 再判断 log2FC 是否超过正负阈值。
  3. 同时满足时,归为上调或下调。
  4. 其他情况归为 NS。

这一步不是为了美化,而是为了让颜色和统计结论一致。
如果分类规则混乱,图再漂亮也没有分析价值。

3. 差异分析结果如何准备,火山图才能画对

3.1 输入数据至少要包含四列

标准火山图数据通常至少包括:

  • 基因名。
  • log2FC。
  • p值或padj。
  • 分组方向,up、down 或 NS。

如果使用 ggplot2 体系,还可以加入:

  • label,用于标注重点基因。
  • -log10(padj),用于纵轴计算。

没有完整的结果表,就无法画出规范的火山图。

3.2 先统一列名,再做阈值判断

在R分析中,很多错误都来自列名不统一。
比如有的结果列叫 log2FoldChange,有的叫 logFC
有的显著性列叫 padj,有的叫 adj.P.Val

所以第一步要做的是统一字段。
然后再计算分类变量,例如:

  • log2FC > cutoffpadj < 0.05,标记为 Up。
  • log2FC < -cutoffpadj < 0.05,标记为 Down。
  • 其余标记为 NS。

这一步决定后续配色是否正确。

3.3 先看分布,再决定阈值

不是所有数据都适合直接套用固定阈值。
如果差异基因太少,说明阈值可能过严。
如果差异基因过多,说明阈值可能过松,或者批次效应较强。

实操中可以先观察:

  • 上下调比例是否接近。
  • 是否存在大量点挤在图中央。
  • 是否有极端值把坐标轴拉得过大。

阈值不是死规定,而是要结合数据分布来调整。

4. 火山图绘制时最容易出错的细节

4.1 纵轴到底用p值还是padj

这是最常见的一个问题。
从严格的统计学角度看,差异分析结果展示更建议使用 padj
因为它已经控制了多重检验带来的假阳性。

如果使用原始 p 值,图上“显著”点可能更多。
但这种显著不一定可靠。

论文级分析优先用 padj。
探索性分析可以同时查看 p值和 padj 的结果。

4.2 标签不要标太多

火山图上最常见的问题之一,是基因名标得太密。
结果是图看不清,读者也看不懂。

通常建议只标注:

  • Top 5 上调基因。
  • Top 5 下调基因。
  • 或者文献重点关注的候选基因。

可以利用 ggrepel 避免标签重叠。
这在高密度点图中非常有用。

火山图的目标是突出核心信号,不是把所有基因都贴上名字。

4.3 颜色要稳定,逻辑要统一

常见配色逻辑是:

  • NS:灰色。
  • Down:蓝色。
  • Up:红色。

这一规则在多数文章中都容易理解。
关键是全篇一致。
不要前面一张图红色代表下调,后面又变成上调。

颜色统一,能显著降低读者理解成本。

4.4 坐标轴范围不要被极端值带偏

有些数据中,个别基因 log2FC 特别大。
这会把横轴范围拉得很宽。
结果多数点都挤在中间,看不出结构。

常见处理方式包括:

  • 限制显示范围。
  • 对极端值进行截断展示。
  • 只标记重点基因,不强行显示全部极值标签。

这类处理是为了提升可读性,不是为了修改结果。

5. 从结果表到高质量火山图的标准流程

5.1 第一步,完成差异分析

常见工具包括:

  • DESeq2,适用于 counts 数据。
  • limma,常用于标准化后的表达矩阵或芯片数据。

如果是 RNA-seq 原始计数数据,通常优先使用 DESeq2。
如果是芯片或已处理表达矩阵,limma 更常见。

5.2 第二步,筛选阈值并生成分组变量

建议先定义:

  • logFC_cutoff
  • padj_cutoff

然后根据结果表生成 changedirection 列。
这一列是火山图分类的基础。

5.3 第三步,提取重点基因用于标注

通常从显著差异基因中筛选:

  • log2FC 最大的上调基因。
  • log2FC 最小的下调基因。
  • 或 padj 最小的前几位基因。

这样可以保证标注基因更有代表性。

5.4 第四步,作图并检查图形逻辑

最终火山图至少要检查以下内容:

  • 点的颜色是否和分类一致。
  • 横纵轴方向是否正确。
  • 分界线是否放在阈值位置。
  • 标签是否重叠。
  • 上下调数量是否和结果表一致。

图形不是画完就结束,而是必须回查统计逻辑。

6. 论文和报告中,火山图应该怎么解读

6.1 先看整体,再看局部

阅读火山图时,建议按这个顺序:

  1. 先看两侧是否对称。
  2. 再看显著点是否集中在两端。
  3. 然后看上调和下调数量是否平衡。
  4. 最后检查重点基因是否落在合理区域。

如果大部分点都集中在中间,说明差异整体不强。
如果一侧特别多,可能提示生物学偏向,也可能提示技术偏差。

6.2 不能只看火山图,还要结合热图和富集分析

火山图只回答“哪些基因变了”。
它不能单独回答“这些变化意味着什么”。

因此,规范的差异分析通常要配合:

  • 聚类热图,看样本分组是否清晰。
  • GO/KEGG 富集分析,看功能通路。
  • 关键基因表达验证,看结论是否稳健。

火山图是入口,不是终点。

总结Conclusion

火山图差异分析的关键,不在于把点画出来,而在于把 log2FC、padj、分组规则和标注策略 设对。** 只有参数合理,火山图才真正具有解释力和发表价值。** 对医学生、医生和科研人员来说,理解这些核心参数,能显著提升结果解读效率,也能减少后续返工。

如果你希望更快完成规范的差异分析图形整理、参数设置和结果输出,可以借助 解螺旋 的专业生信内容与工具支持,把时间从重复操作中释放出来,专注于真正有价值的科研问题。

解螺旋科研助手企业微信二维码,扫码添加免费领取科研资料礼包,包含AI科研提效、SCI投稿技巧、国自然基金、医学科研绘图、科研软件工具等实用资料