用途:把多个独立图表组合成一张符合期刊要求的多面板(multi-panel)图,统一尺寸、共享图例与坐标轴,并添加 a/b/c 式面板标签。
主要能力:
- R 侧:patchwork(用 +、/、| 组合,plot_layout 支持 guides='collect'、axes='collect'、axis_titles='collect',plot_annotation 加标签)、cowplot(plot_grid,支持对齐 align='hv'、AUTO 标签)、gridExtra(基础排布)。in R patchwork;
- Python 侧:matplotlib.gridspec.GridSpec 跨行列布局,fig.subfigures() 嵌套子图(matplotlib 3.4+ 稳定),每个子图有独立 constrained_layout。
必要用法与版本:patchwork 的 axes='collect'、axis_titles='collect' 需要 patchwork ≥ 1.2.0(2024-01-05 发布),低版本会静默忽略。示例版本:patchwork 1.2+、cowplot 1.1+、ggplot2 3.5+、matplotlib 3.8+。使用前用 R 的 packageVersion('<pkg>') 或 Python 的 pip show <package> 核对版本。保存用 ggsave(..., units='mm', device=cairo_pdf);Python 用 fig.savefig('figure.pdf', dpi=300, bbox_inches='tight')。
适用场景:Nature/Cell/Science 等期刊投稿图。期刊尺寸(mm):Nature 单栏 89、双栏 183、最大高 247;Cell 85/174/235;Science 55/120/220;PNAS 87/178/225;eLife 86/175/~240。面板标签:Nature 用 8pt 粗体小写衬线(a、b、c),Cell 大写粗体无衬线,Science 大写粗体。
限制与常见问题:patchwork < 1.2.0 时 axes='collect' 无效导致每面板重复坐标轴;ggsave 默认单位为英寸、默认设备可能产生非嵌入字体而被拒稿;cowplot align='v' 在不同宽度图上会错位;guides='collect' 在不同 scale 下不合并图例,需统一 scale 或删除多余图例;matplotlib 无 constrained_layout 时 colorbar 会与相邻子图重叠。面板标签位置会因 y 轴标签宽度不同而偏移,可统一标签宽度或把 tag 移到绘图区内。