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

如何用R Markdown在Word中生成2×2布局的高质量ggplot2图表?

解决方案:在R Markdown生成的Word文档中实现2×2布局的高质量图表

以下是三种可靠的实现方式,均能保持图表的矢量级清晰度,避免轴标题模糊的问题:

方法1:使用patchwork包(推荐,语法直观)

patchwork是ggplot2生态中专门用于组合图表的工具,语法简洁易懂,支持灵活的布局调整。

---
title: "Test graphs"
output: word_document
---

```{r setup, include=FALSE}
knitr::opts_chunk$set(echo = FALSE, dpi = 900)
library(ggplot2)
library(patchwork) # 加载组合图表的包
set.seed(1234)

wdata = data.frame(
  sex = factor(rep(c("F", "M"), each=200)),
  weight = c(rnorm(200, 55), rnorm(200, 58))
)

# 预先创建4个不同的图表
p1 <- ggplot(wdata, aes(x = weight)) + 
  geom_bar(stat = "bin", color= "black", fill="red") +
  labs(title = "直方图")

p2 <- ggplot(wdata, aes(x = sex, y = weight)) + 
  geom_boxplot(fill="blue") +
  labs(title = "箱线图")

p3 <- ggplot(wdata, aes(x = weight, fill = sex)) + 
  geom_density(alpha=0.5) +
  labs(title = "密度图")

p4 <- ggplot(wdata, aes(x = weight)) + 
  geom_histogram(aes(y=..density..), color="black", fill="green") +
  geom_density(color="red") +
  labs(title = "直方图+密度曲线")
# 用patchwork组合成2×2布局
(p1 + p2) / (p3 + p4)
# 也可以用等价写法:p1 + p2 + p3 + p4 + plot_layout(ncol=2)
## 方法2:使用gridExtra包的grid.arrange函数
这是经典的图表组合工具,适合习惯基础布局逻辑的用户:

```r
---
title: "Test graphs"
output: word_document
---

```{r setup, include=FALSE}
knitr::opts_chunk$set(echo = FALSE, dpi = 900)
library(ggplot2)
library(gridExtra) # 加载gridExtra包
set.seed(1234)

wdata = data.frame(
  sex = factor(rep(c("F", "M"), each=200)),
  weight = c(rnorm(200, 55), rnorm(200, 58))
)

# 创建4个图表
p1 <- ggplot(wdata, aes(x = weight)) + 
  geom_bar(stat = "bin", color= "black", fill="red") +
  labs(title = "直方图")

p2 <- ggplot(wdata, aes(x = sex, y = weight)) + 
  geom_boxplot(fill="blue") +
  labs(title = "箱线图")

p3 <- ggplot(wdata, aes(x = weight, fill = sex)) + 
  geom_density(alpha=0.5) +
  labs(title = "密度图")

p4 <- ggplot(wdata, aes(x = weight)) + 
  geom_histogram(aes(y=..density..), color="black", fill="green") +
  geom_density(color="red") +
  labs(title = "直方图+密度曲线")
# 指定ncol=2实现2×2布局
grid.arrange(p1, p2, p3, p4, ncol=2)
## 方法3:利用knitr原生布局参数(无需额外包)
如果使用knitr 1.35及以上版本,可以直接通过代码块参数实现布局,无需加载额外包:

```r
---
title: "Test graphs"
output: word_document
---

```{r setup, include=FALSE}
knitr::opts_chunk$set(echo = FALSE, dpi = 900)
library(ggplot2)
set.seed(1234)

wdata = data.frame(
  sex = factor(rep(c("F", "M"), each=200)),
  weight = c(rnorm(200, 55), rnorm(200, 58))
)
# 依次绘制4个图表,knitr会自动排列成2×2布局
ggplot(wdata, aes(x = weight)) + 
  geom_bar(stat = "bin", color= "black", fill="red") +
  labs(title = "直方图")

ggplot(wdata, aes(x = sex, y = weight)) + 
  geom_boxplot(fill="blue") +
  labs(title = "箱线图")

ggplot(wdata, aes(x = weight, fill = sex)) + 
  geom_density(alpha=0.5) +
  labs(title = "密度图")

ggplot(wdata, aes(x = weight)) + 
  geom_histogram(aes(y=..density..), color="black", fill="green") +
  geom_density(color="red") +
  labs(title = "直方图+密度曲线")
### 注意事项
- 若未安装所需包,执行`install.packages(c("patchwork", "gridExtra"))`完成安装
- 保留`dpi=900`的设置,确保图表在Word中放大后依然清晰
- 如需调整图表间距,可在patchwork中使用`plot_spacing`参数,或在grid.arrange中使用`padding`参数

内容的提问来源于stack exchange,提问作者silent_hunter
相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.23 18:52:04