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

如何在Quarto的PDF输出中导入PNG文件实现子图布局?

在Quarto PDF中插入PNG子图的可行方案

方法1:用Quarto原生Subfigure语法(推荐)

这是适配PDF输出最直接的方式,能生成带规范子标题的2×2布局,代码示例如下:

::: {#fig-multiplot layout-ncol=2}
![子图A:这里写子图描述](plot1.png){#fig-sub1 width="45%"}
![子图B:这里写子图描述](plot2.png){#fig-sub2 width="45%"}
![子图C:这里写子图描述](plot3.png){#fig-sub3 width="45%"}
![子图D:这里写子图描述](plot4.png){#fig-sub4 width="45%"}
整体组合图的标题
:::
  • layout-ncol=2:强制子图按2列排列,4张图自动变成2×2布局
  • width="45%":控制单张子图宽度,避免超出页面或挤在一起
  • 子图的![子标题]会自动生成带(a)(b)(c)(d)标识的子标题,符合学术PDF排版规范
  • #fig-multiplot是整体图的全局标签,方便后续交叉引用

方法2:结合knitr代码块实现

如果习惯用R代码块,也可以通过设置chunk参数实现:

```{r fig-multiplot, fig.subcap=c("子图A描述", "子图B描述", "子图C描述", "子图D描述"), fig.ncol=2, out.width="45%", fig.cap="整体组合图标题"}
knitr::include_graphics(c("plot1.png", "plot2.png", "plot3.png", "plot4.png"))
- `fig.subcap`:指定每个子图的标题,自动生成带字母标识的子标题
- `fig.ncol=2`:设置2列布局,自动排成2×2
- `out.width="45%"`:控制子图宽度,保证布局美观

## 之前方法失败的原因
- 单独调用`knitr::include_graphics`时,每张图会被识别为独立的顶层图,无法合并为子图;若只传图片向量但没设置`fig.subcap`等参数,Quarto不会解析子图结构,只会渲染第一张图
- 普通div布局不属于Quarto的原生图环境,无法触发子标题的渲染逻辑,所以没法生成规范的子标题

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

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

最近更新时间:2026.07.29 21:13:24