knitr/rmarkdown - 减少html文件大小

Mar*_*yes 9 html resolution rstudio knitr r-markdown

我想使用knitr/rmarkdown生成一个html文档.目前,该文件超过20MB,我正试图找到一种方法来减少它.大文件大小可能是由于我的情节中有很多点.

如果我将输出类型更改为pdf,我可以将其降低到1.7MB.我想知道是否有办法减少我的文件,同时保持它作为一个HTML.

编辑:这是我在RStduio中做的一个最小的工作示例.

---
title: "Untitled"
author: "My Name"
date: "September 7, 2015"
output: html_document
---

```{r}
library(ggplot2)
knitr::opts_chunk$set(dev='svg')
```

```{r}
set.seed(1)
mydf <- data.frame(x=rnorm(2e4),y=rnorm(2e4))
ggplot(mydf, aes(x,y)) + geom_point(alpha=0.6)
```
Run Code Online (Sandbox Code Playgroud)

我还注意到,如果我有太多的观察结果,那么情节根本就不会产生.我只是在输出中得到一个带有问号的空盒子.

```{r}
set.seed(2)
mydf <- data.frame(x=rnorm(5e4),y=rnorm(5e4))
ggplot(mydf, aes(x,y)) + geom_point(alpha=0.6)
# ...plot doesn't appear in output
Run Code Online (Sandbox Code Playgroud)

```

alg*_*ant 9

根据@daroczig建议使用"dpi"knitr chunk选项,我修改了你的代码如下(见下文).

  • 您已将dev chunk选项设置为"svg",这会生成非常大的矢量图形文件,尤其是对于由许多元素(点,线等)组成的图像
  • 我将dev chunk选项设置为等于"png",这是HTML输出的默认光栅图形格式.所以你根本不需要触摸它.保持dev chunk选项等于"png"会大大减少HTML输出文件的大小.
  • 我将dpi chunk选项设置为等于36(默认为72),以降低图像分辨率,并进一步减小HTML输出文件的大小.
  • 我将out.width和out.height chunk选项设置为"600px",以增加图像尺寸.
  • 您可以更改dpi,out.width和out.height选项,直到获得所需的HTML输出文件大小和图像维度.在输出文件大小和图像分辨率之间进行权衡.

编织代码后,即使绘制5e4数据点,我的HTML输出文件大小也会达到653kB.

---
title: "Change size of output HTML file by reducing resolution of plot image"
author: "My Name"
date: "September 7, 2015"
output: html_document
---

```{r}
# load ggplot2 silently
suppressWarnings(library(ggplot2))
# chunk option dev="svg" produces very large vector graphics files
knitr::opts_chunk$set(dev="svg")
# chunk option dev="png" is the default raster graphics format for HTML output
knitr::opts_chunk$set(dev="png")
```

```{r, dpi=36, out.width="600px", out.height="600px"}
# chunk option dpi=72 is the default resolution
set.seed(1)
mydf <- data.frame(x=rnorm(5e4),y=rnorm(5e4))
ggplot(mydf, aes(x,y)) + geom_point(alpha=0.6)
```
Run Code Online (Sandbox Code Playgroud)