如何在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
相关产品推荐
相关产品推荐

