SuperAPI AI 工具集

bio-data-visualization-upset-plots

数据与分析

查看项目

更新于 10-15 21:55

技能介绍

用途:当集合数量超过 3 至 4 个、Venn 图无法清晰表达交集时,用 UpSet 图展示集合交集。图中以点阵表示每个交集包含哪些集合,上方竖条表示交集大小,左侧横条表示各集合总量。

主要能力:R 端推荐 ComplexUpset(ggplot2 语法、持续维护),支持按基数或度数排序、用 upset_query 高亮指定交集、叠加任意 ggplot 属性面板(如 log2 FC 箱线图、显著比例堆叠条)。UpSetR 为原始实现,自 2019 年 v1.4.0 后无 CRAN 更新,基本停止维护,仅建议用于复现旧图。Python 端使用 upsetplot.UpSet,配合 from_contents 或 from_indicators 构造数据,可设置 subset_size、show_counts、sort_by 与 style_subsets。

使用方式:R 中先把集合列表转为每行一个元素、每集合一列布尔值的长表,再调用 upset(),用 intersect 指定集合列、n_intersections 限制显示数量、sort_intersections_by 选择 cardinality 或 degree。Python 中 from_contents(sets) 得到数据后传给 UpSet 并 plot。

适用场景:基因集重叠、差异表达基因列表比较、通路富集结果对比等。

限制:集合数建议 8 至 10 以内,交集数按 2^N−1 增长,需用 n_intersections 限制(如 20)或预先指定交集;默认按基数排序会让单集合独占项排在最前,掩盖跨集合重叠,可排除单集合或改按度数排序;fromList 输入需先去重(lapply(sets, unique));ggplot2 4.0 曾破坏 ComplexUpset 的 upset()(issue #213),可暂时固定 ggplot2 ≤ 3.5.2;Python 与 R 默认排序不同,需显式统一 sort_by。具体版本兼容与修复状态以实际安装为准。