随着组学数据在规模和复杂性上的快速增长,生物医学研究面临着一个核心挑战:如何直观、高效地呈现多层次、高维度的数据关系?传统的数据可视化工具往往局限于单一图表类型或简单的并列布局,难以捕捉基因、样本、通路等元素之间错综复杂的联系。
这项研究已发表在 Advanced Science(影响因子 14.1)上。
论文题目:《ggalign: Bridging the Grammar of Graphics and Biological Multilayered Complexity》。
一句话总结:我们开发了 ggalign——一个基于 ggplot2 生态系统的可组合可视化框架,它通过数据感知的布局、灵活的观测对齐以及跨图表链接机制,让复杂生物数据的多层次关联变得一目了然。

为什么需要可组合的可视化?
在基因组学、转录组学、微生物组学等领域,数据往往是多模态、多层次的。例如,一个基因集可能同时涉及表达谱、突变谱、通路富集和表型关联。传统做法是将这些信息分散在多个独立的图表中,读者需要在大脑中进行“拼图”,不仅容易丢失上下文,也难以发现跨层级的隐藏模式。
现有的可视化工具(如 ComplexHeatmap、ggtree)虽在特定领域表现出色,但缺乏通用的、可扩展的跨图表对齐机制。而像 aplot、Marsilea 等工具虽支持图表组合,但主要局限于“一对一”的对齐,无法处理“一对多”或“多对多”的复杂关系(例如,一个通路对应多个基因,一个基因又参与多个生物学过程)。
ggalign 的核心思想
ggalign 的核心理念是 “数据感知的可视化组合”。它不仅仅是把几个图放在一起(数据无关组合),而是让共享相同观测单元(如基因、样本)的图表在视觉上严格对齐,确保每个观测对象在所有面板中出现在相同的位置、相同的顺序。
为了实现这一目标,ggalign 构建了一个分层的架构:
-
数据无关组合(Data‑Free Composition):类似于 patchwork 或 cowplot,提供精细的布局控制、图例合并、坐标轴协调。核心函数
align_plots()可以将 ggplot2、ComplexHeatmap、base R 图等多种图形对象统一转换为可编排的“补丁”(Patch),并支持自由调整对齐、间距与边框。 -
数据感知组合(Data‑Aware Composition):这是 ggalign 的亮点。它通过 Layout S7 类系统 跟踪观测单元的轴域、数量,确保所有加入布局的图表在维度上兼容,并支持用户定义的排序与分组。当你对某个图表中的观测进行聚类、重排或分组时,所有关联的图表都会同步更新,保持全局一致性。
-
三大布局系统:
- 圆形布局(CircleLayout):将图表排列成环形,紧凑展示相互关联的关系网络。
- 堆叠布局(StackLayout):沿共享轴堆叠多个图表,便于纵向比较。
- 象限布局(QuadLayout):将四个上下文注释图围绕一个中心参考图排列,突出相互依赖。
-
观测链接与标注:ggalign 支持通过线段或多边形将不同图表中的对应观测连接起来,实现“一对多”、“多对多”关系的可视化。函数
ggmark()可以跨面板标注相关观测,让复杂的生物学结构(如基因模块、样本分组)一目了然。
实际应用案例
文章通过三个实际案例展示了 ggalign 的威力:
- 跨癌症微生物组分析:将不同癌种的微生物丰度、宿主基因表达、临床指标对齐显示,揭示微生物‑宿主互作的特异性模式。
- 整合基因组分析:同时展示基因拷贝数变异、甲基化水平、染色质可及性以及表达量,直观呈现表观遗传调控的全景。
- 单细胞转录组学:将细胞聚类、差异表达基因、通路富集结果以及拟时序轨迹对齐,帮助研究者快速识别关键细胞状态及其驱动基因。
为什么 ggalign 值得关注?
- 语法一致性:完全基于 ggplot2 语法,用户无需学习新的绘图语言,只需在现有代码中加入对齐逻辑即可。
- 高度可扩展:通过
patch()泛型函数,可以轻松支持新的图形类型;开发者也可以创建自定义的 Patch 类来实现特殊的布局策略。 - 再现性与自动化:所有对齐、排序、链接操作都可以用代码完整描述,避免手工调整,确保分析流程的可重复性。
- 出版级输出:生成的图表可直接用于学术论文、报告或海报,保持专业的美学标准。
题外话
ggalign 包由北京大学人民医院泌尿外科彭云博士开发。从最初的热图可视化需求出发,一步步打磨成如今这样通用的框架,这个过程并不容易。

直到他在 GitHub 上联系我,聊起这段渊源,我才意识到当年创建的知识星球竟然产生了这样的影响。

有时收到这样的感谢,我自己都有些意外。但也正是这些反馈,让我确信自己做的事情是有意义的。也感谢你们的支持和陪伴。