You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

R中如何在同一窗口绘制多个不同尺寸的ggraph网络图?

解决方案

你之前的尝试出现问题的核心原因是参数和布局结构不匹配:

  • 使用grid.arrange时你指定了1行3列的布局,但传入了3个高度值,实际上单行布局仅会读取第一个高度参数,导致所有图片高度一致
  • 使用plot_grid时你指定了2列布局,但传入了3个宽度/高度值,参数和实际行列数不对应,导致比例失效

推荐优先使用patchwork包实现该需求,它是目前ggplot生态下最灵活的拼图工具,以下是不同需求对应的实现方案:

方案1:一行排列,宽度比例1:0.5:0.25

如果需要三个图在同一行,仅宽度按比例缩放、高度一致,代码如下:

library(patchwork)

allPlots[[1]] + allPlots[[2]] + allPlots[[3]] +
  plot_layout(nrow = 1, widths = c(1, 0.5, 0.25))

方案2:匹配示例图的阶梯布局

如果需要第一个图占满左侧区域,右侧上下排列第二、第三个图,尺寸比例符合你要求的1:1/2:1/4,代码如下:

library(patchwork)

# 定义布局:A为第一个图,占左列2行;B、C分别为第二、第三个图,占右列上下两行
layout <- "
AA
BC
"
allPlots[[1]] + allPlots[[2]] + allPlots[[3]] +
  plot_layout(design = layout, widths = c(2, 1), heights = c(2, 1))

方案3:修正你的gridExtra代码

如果你要继续使用gridExtra,只需要修正参数匹配即可:

# 一行三列布局
grid.arrange(
  grobs = allPlots,
  widths = c(1, 0.5, 0.25),
  nrow = 1
)

# 阶梯布局
grid.arrange(
  grobs = allPlots,
  widths = c(2, 1),
  heights = c(2, 1),
  layout_matrix = rbind(c(1, 2), c(1, 3))
)

方案4:修正你的cowplot代码

使用cowplot嵌套调用也可以实现:

# 一行三列布局
plot_grid(plotlist = allPlots, nrow = 1, rel_widths = c(1, 0.5, 0.25))

# 阶梯布局
right_col <- plot_grid(allPlots[[2]], allPlots[[3]], ncol = 1, rel_heights = c(2, 1))
plot_grid(allPlots[[1]], right_col, ncol = 2, rel_widths = c(2, 1))

内容的提问来源于stack exchange,提问作者Electrino

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 13:54:07