通过 cache=TRUE 在 knitr 中创建的绘图不保留指定的边距

Plot created in knitr via cache=TRUE do not keep the specified margin

我正在使用 cache=T chunck 选项通过 knitr 创建绘图。我正在使用 Rstudio。

输出 pdf 或保存在文件夹中的绘图中不显示边距。但是,如果我在外边距上添加一个框,它会按预期工作。

是否有一个 chunck 选项来控制它?我查看了 https://yihui.name/knitr/options 上的绘图选项,但没有找到任何可以解决问题的选项。

这是一个 Rmd 文件和创建的 2 个图像,注意 par(mar=c(4,4,4,4)theme(plot.margin=unit(rep(2,4),"cm")) 的使用。

---
title: "Untitled"
output: pdf_document
---

```{r setup, include=FALSE}
knitr::opts_chunk$set(echo = TRUE,cache=T,dev='jpeg',fig.height=5,fig.width=5)
library(ggplot2)
```

```{r base}
par(mar=c(4,4,4,4))
plot(mtcars$cyl,mtcars$mpg)
```

```{r ggplot}
ggplot(data = mtcars) +
  geom_point(aes(x=cyl,y=mpg))+
  theme(plot.margin=unit(rep(2,4),"cm"))
```

```{r base_with_box}
par(mar=c(4,4,4,4))
plot(mtcars$cyl,mtcars$mpg)
box("outer", col='blue')  
```

pdf_document 中默认裁剪 PDF 图。参见 ?rmarkdown::pdf_document。要禁用此功能:

output:
  pdf_document:
    fig_crop: false