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

如何在R中按指定布局组合多幅绘图?

解决ggpubr中绘图布局问题:让散点图占满下方整行

要实现箱线图和点图在上并排、散点图在下占满整行的布局,你可以通过嵌套ggarrange的方式正确组织绘图结构,具体代码如下:

library(ggpubr)
data("ToothGrowth")
data("mtcars")
mtcars$name <- rownames(mtcars)
mtcars$cyl <- as.factor(mtcars$cyl)

# 创建箱线图
bxp <- ggboxplot(ToothGrowth, x = "dose", y = "len", color = "dose", palette = "jco")
# 创建点图
dp <- ggdotplot(ToothGrowth, x = "dose", y = "len", color = "dose", palette = "jco", binwidth = 1)

# 创建散点图
sp = ggscatter(mtcars, x = "wt", y = "mpg", add = "reg.line", conf.int = TRUE, color = "cyl", palette = "jco", shape = "cyl")+
  stat_cor(aes(color = cyl), label.x = 3)

# 正确的布局代码
top_row <- ggarrange(bxp, dp, ncol = 2, labels = c("A", "B"))
ggarrange(top_row, sp, nrow = 2, labels = c("", "C"), heights = c(1, 1))

错误原因说明

你之前尝试的代码使用了nrow=2, ncol=2的网格布局,相当于把绘图区域划分成2×2的四个格子:

  • 箱线图bxp占据第一行第一列
  • 点图dp占据第一行第二列
  • 散点图的组合仅占据第二行第一列,因此只显示在左下角一角,无法占满整行。

而正确的逻辑是先把上方两个图组合成一个"整体行",再将这个整体与散点图按上下两行排列,第二行只有散点图一个元素,自然会占满整行宽度。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.03 23:30:16