随着组学数据在规模和复杂性上的快速增长,生物医学研究面临着一个核心挑战:如何直观、高效地呈现多层次、高维度的数据关系?传统的数据可视化工具往往局限于单一图表类型或简单的并列布局,难以捕捉基因、样本、通路等元素之间错综复杂的联系。

这项研究已发表在 Advanced Science(影响因子 14.1)上。

论文题目:《ggalign: Bridging the Grammar of Graphics and Biological Multilayered Complexity》。

一句话总结:我们开发了 ggalign——一个基于 ggplot2 生态系统的可组合可视化框架,它通过数据感知的布局、灵活的观测对齐以及跨图表链接机制,让复杂生物数据的多层次关联变得一目了然。

为什么需要可组合的可视化?

在基因组学、转录组学、微生物组学等领域,数据往往是多模态、多层次的。例如,一个基因集可能同时涉及表达谱、突变谱、通路富集和表型关联。传统做法是将这些信息分散在多个独立的图表中,读者需要在大脑中进行“拼图”,不仅容易丢失上下文,也难以发现跨层级的隐藏模式。

现有的可视化工具(如 ComplexHeatmap、ggtree)虽在特定领域表现出色,但缺乏通用的、可扩展的跨图表对齐机制。而像 aplot、Marsilea 等工具虽支持图表组合,但主要局限于“一对一”的对齐,无法处理“一对多”或“多对多”的复杂关系(例如,一个通路对应多个基因,一个基因又参与多个生物学过程)。

ggalign 的核心思想

ggalign 的核心理念是 “数据感知的可视化组合”。它不仅仅是把几个图放在一起(数据无关组合),而是让共享相同观测单元(如基因、样本)的图表在视觉上严格对齐,确保每个观测对象在所有面板中出现在相同的位置、相同的顺序。

为了实现这一目标,ggalign 构建了一个分层的架构:

  1. 数据无关组合(Data‑Free Composition):类似于 patchwork 或 cowplot,提供精细的布局控制、图例合并、坐标轴协调。核心函数 align_plots() 可以将 ggplot2、ComplexHeatmap、base R 图等多种图形对象统一转换为可编排的“补丁”(Patch),并支持自由调整对齐、间距与边框。

  2. 数据感知组合(Data‑Aware Composition):这是 ggalign 的亮点。它通过 Layout S7 类系统 跟踪观测单元的轴域、数量,确保所有加入布局的图表在维度上兼容,并支持用户定义的排序与分组。当你对某个图表中的观测进行聚类、重排或分组时,所有关联的图表都会同步更新,保持全局一致性。

  3. 三大布局系统

    • 圆形布局(CircleLayout):将图表排列成环形,紧凑展示相互关联的关系网络。
    • 堆叠布局(StackLayout):沿共享轴堆叠多个图表,便于纵向比较。
    • 象限布局(QuadLayout):将四个上下文注释图围绕一个中心参考图排列,突出相互依赖。
  4. 观测链接与标注:ggalign 支持通过线段或多边形将不同图表中的对应观测连接起来,实现“一对多”、“多对多”关系的可视化。函数 ggmark() 可以跨面板标注相关观测,让复杂的生物学结构(如基因模块、样本分组)一目了然。

实际应用案例

文章通过三个实际案例展示了 ggalign 的威力:

  • 跨癌症微生物组分析:将不同癌种的微生物丰度、宿主基因表达、临床指标对齐显示,揭示微生物‑宿主互作的特异性模式。
  • 整合基因组分析:同时展示基因拷贝数变异、甲基化水平、染色质可及性以及表达量,直观呈现表观遗传调控的全景。
  • 单细胞转录组学:将细胞聚类、差异表达基因、通路富集结果以及拟时序轨迹对齐,帮助研究者快速识别关键细胞状态及其驱动基因。

为什么 ggalign 值得关注?

  1. 语法一致性:完全基于 ggplot2 语法,用户无需学习新的绘图语言,只需在现有代码中加入对齐逻辑即可。
  2. 高度可扩展:通过 patch() 泛型函数,可以轻松支持新的图形类型;开发者也可以创建自定义的 Patch 类来实现特殊的布局策略。
  3. 再现性与自动化:所有对齐、排序、链接操作都可以用代码完整描述,避免手工调整,确保分析流程的可重复性。
  4. 出版级输出:生成的图表可直接用于学术论文、报告或海报,保持专业的美学标准。

题外话

ggalign 包由北京大学人民医院泌尿外科彭云博士开发。从最初的热图可视化需求出发,一步步打磨成如今这样通用的框架,这个过程并不容易。

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

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