从rmarkdown生成pdf输出时自动调整大图以适应页面

6
我在将带有大型绘图的rmarkdown文件转换为PDF时遇到了问题。制作PDF文件时,图表被截断。
问题在于我找不到一种自动调整所有图表高度和宽度的方法。由于我正在撰写一个非常大的报告,因此像这样有多个图表,因此单独调整它们(通过fig.width和fig.height)是不可行的。
是否有任何包/命令应在我的YAML或preamble.tex文件中使用?
最小可重现示例:
---
output: pdf_document
---

## Large Plot

```{r}
library(meta)

data(Fleiss93)

##
m <- metabin(event.e, n.e, event.c, n.c,
              data = Fleiss93, studlab = study,
              sm = "RR", method = "I")

forest(m)
```
1个回答

7
要更改默认设置,请在文档开头放置以下代码块:
```{r include = FALSE}
knitr::opts_chunk$set(fig.height = 9, fig.width = 7)
```

您还可以使用类似以下的方法:

```{r include = FALSE}
knitr::opts_chunk$set(out.height = "\\textheight",  out.width = "\\textwidth")
```

为了尝试精确填充页面,需要重新调整图片的比例。默认情况下,knitr会防止您改变纵横比,但如果您真的想填满页面,包括所有的扭曲,可以使用以下方法:

```{r include = FALSE}
knitr::opts_chunk$set(out.height = "\\textheight",  out.width = "\\textwidth",
                      out.extra = "keepaspectratio=false")
```

我建议不要选择最后一种方法,因为你的图表会看起来非常丑陋。
总的来说,knitr 的默认设置已经很好了。如果你使用 knitr::opts_chunk$set() 更改任何一个选项,当你想要恢复原始默认设置时,就需要明确指定这个选项。所以对于这些奇怪的选项,可能最好的方法是将选项剪切并粘贴到每个需要它们的代码块中,并保留默认设置。

1
我已经尝试将其设置为“\textheight”和“\textwidth”,但出于某种原因它不起作用...另外,设置fig.height和fig.width的第一个选项非常好,但问题是几乎所有图形的高度和宽度都不同...所以实际上并不适用于我的目的。我想知道是否有一种方法告诉Pandoc将图表调整到最大高度和宽度,而不会裁剪它们? - FMM
Pandoc没有参与。R设置原始图像的高度和宽度,LaTeX设置缩放比例。LaTeX可以缩放到全尺寸(使用\textwidth或\maxwidth),但是除非R进行的原始大小设置具有相同的纵横比,否则看起来会很糟糕,而R不知道LaTeX将使用什么纵横比。因此,只有通过反复试验才能找到更好的方法。 - user2554330

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接