在 `knitr` 块中使用 `fig.retina` 会导致意外的图形大小

Using `fig.retina` in `knitr` chunk results in unexpected figure sizes

根据 documentation knitrfig.retina 的默认值是数值 1。我希望将设置留空(下面的示例 1)会生成与下面示例 2 中我指定 fig.retina=1 完全相同的图像。相反,我发现默认值 (#1) 会创建一个 60kb 的图像,而设置 fig.retina=1 会产生一个 25kb 的图像。

也许明确设置 fig.retina 覆盖其他设置或什么?有没有人解释为什么将块选项留空结果是一个比设置 fig.retina=1(应该是默认值)大两倍以上的数字?

---
title: "Untitled"
output:
  html_document:
    self_contained: false
---

```{r onefile_figretinaDefault}
#1. this is 60kb on disk
library(ggplot2)
ggplot(cars, aes(speed, dist)) + geom_point()
```


```{r onefile_figretina1, fig.retina=1 }
#2. this is 25kb on disk
ggplot(cars, aes(speed, dist)) + geom_point()
```


```{r onefile_figretina2, fig.retina=2 }
#3. this is 60kb on disk
ggplot(cars, aes(speed, dist)) + geom_point()
```


```{r onefile_figretinaNULL, fig.retina=NULL}
#4. this is 25kb on disk
ggplot(cars, aes(speed, dist)) + geom_point()
```

```{r onefile_figretina1_owNULL, out.width = NULL, fig.retina=1 }
#5. this is 25kb on disk
ggplot(cars, aes(speed, dist)) + geom_point()
```

knitr 文档有点误导。 rmarkdown 将默认值设置为不同的值。例如,我在 HTML 文档中看到默认值为 2。

您可以通过打印块中的值来查看默认值:

knitr::opts_chunk$get("fig.retina")

会给你默认值,

knitr::opts_current$get("fig.retina")

会给你当前值。

如果您查看 knitr 源代码(在 Github 上),您可以看到默认值为 1(因此文档是正确的),但是如果您查看 rmarkdown文档(或来源),许多输出设备(例如html_document)改变它。