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

时间:2017-05-30 17:08:13

标签: rstudio knitr r-markdown

根据documentationfig.retinaknitr的默认值是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()
```

1 个答案:

答案 0 :(得分:1)

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

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

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

将为您提供默认值,

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

会给你当前的价值。

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