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

如何在R Markdown Beamer单张幻灯片中实现2×2布局的四张图表排版?

在R Markdown Beamer中实现2×2多图布局的可行方案

我明白你在R Markdown Beamer里排版2×2 ggplot图时遇到的麻烦了——之前用par(mfrow=c(2,2))完全没效果,试了ggarrange()、plot_grid()也没成功,大概率是几个关键细节没处理到位,下面给你一套绝对能跑通的方案:

问题根源

你用的par(mfrow)是base绘图系统的参数,但ggplot2属于grid绘图系统,两者完全不兼容,所以这个方法对ggplot图根本不起作用。另外,之前的代码里没有真正调用排版函数(你把ggarrange和plot_grid注释掉了),而且可能没调整幻灯片的图尺寸,导致图显示异常。

完整可运行代码

直接替换你原来的代码块就行,我已经把所有细节都调整好了:

# 先加载所有依赖包,放在最前面避免报错
library(tidyverse)
library(haven)
library(ggplot2)
library(ggpubr)
library(cowplot)
library(extrafont)
library(gridExtra)

# 读取数据并处理因子变量
df <- read_dta(file = "aaa.dta")
df$fchaebol <- factor(df$chaebol) # 直接在数据框内转换,更整洁

# 生成四个ggplot折线图
p1 <- ggplot(df,aes(x= year, y= asset, color = fchaebol, linetype = fchaebol)) +
  theme_bw() +
  stat_summary(geom = "line", fun = mean) # 注意:ggplot2 3.0+版本用fun替代旧的fun.y

p2 <- ggplot(df,aes(x= year, y= liability, color = fchaebol, linetype = fchaebol)) +
  theme_bw() +
  stat_summary(geom = "line", fun = mean)

p3 <- ggplot(df,aes(x= year, y= sales, color = fchaebol, linetype = fchaebol)) +
  theme_bw() +
  stat_summary(geom = "line", fun = mean)

p4 <- ggplot(df,aes(x= year, y= equity, color = fchaebol, linetype = fchaebol)) +
  theme_bw() +
  stat_summary(geom = "line", fun = mean)

# 用ggpubr的ggarrange实现2×2布局,共享图例让布局更紧凑
ggarrange(p1, p2, p3, p4,
          ncol = 2, nrow = 2,
          common.legend = TRUE,
          legend = "bottom") # 图例放在底部,不占用子图空间

# 如果你更喜欢cowplot的风格,也可以用下面的plot_grid(注释掉上面的ggarrange即可)
# plot_grid(p1, p2, p3, p4,
#           ncol = 2,
#           labels = c("A", "B", "C", "D"), # 给子图加标签
#           label_size = 10)

关键注意事项

  • 彻底删掉par(mfrow=c(2,2)),它和ggplot完全不兼容
  • 一定要调整fig.width和fig.height参数:Beamer幻灯片通常是4:3或16:9比例,设置fig.width=8, fig.height=6是4:3的黄金比例,刚好能让四张图填满幻灯片,不会太挤或太小
  • ggplot2 3.0版本之后,fun.y参数已经被废弃,改成fun = mean可以避免警告
  • 用common.legend = TRUE合并图例,能大大节省子图空间,让每个图的显示面积更大

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.29 18:27:51