knitr/rmarkdown - 减小 html 文件大小
knitr/rmarkdown - reducing html file size
我想使用 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)
```
我还注意到,如果我有太多的观察,则根本不会生成情节。我只是在输出中得到一个带有问号的空框。
```{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
```
根据@daroczig 使用 "dpi" knitr chunk 选项的建议,我修改了您的代码如下(见下文)。
- 您已将开发块选项设置为 "svg",这会生成非常大的矢量图形文件,尤其是对于由许多元素(点、线等)组成的图像
- 我将开发块选项重新设置为 "png",这是 HTML 输出的默认光栅图形格式。所以你根本不需要去碰它。保持 dev chunk 选项等于 "png" 会显着减少 HTML 输出文件的大小。
- 我将 dpi 块选项设置为 36(默认值为 72),以降低图像分辨率,并进一步减小 HTML 输出文件大小。
- 我将 out.width 和 out.height 块选项设置为“600px”,以增加图像尺寸。
- 您可以更改 dpi、out.width 和 out.height 选项,直到您获得所需的 HTML 输出文件大小和图像尺寸。输出文件大小和图像分辨率之间存在权衡。
编织代码后,我得到一个 HTML 输出文件大小等于 653kB,即使在绘制 5e4 个数据点时也是如此。
---
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)
```
为了防止带有许多点的散点图放大矢量图形(以及相应的 html 输出),您可以使用 ggrastr
包中的 geom_point_raster()
。吃蛋糕也要吃!
我想使用 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)
```
我还注意到,如果我有太多的观察,则根本不会生成情节。我只是在输出中得到一个带有问号的空框。
```{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
```
根据@daroczig 使用 "dpi" knitr chunk 选项的建议,我修改了您的代码如下(见下文)。
- 您已将开发块选项设置为 "svg",这会生成非常大的矢量图形文件,尤其是对于由许多元素(点、线等)组成的图像
- 我将开发块选项重新设置为 "png",这是 HTML 输出的默认光栅图形格式。所以你根本不需要去碰它。保持 dev chunk 选项等于 "png" 会显着减少 HTML 输出文件的大小。
- 我将 dpi 块选项设置为 36(默认值为 72),以降低图像分辨率,并进一步减小 HTML 输出文件大小。
- 我将 out.width 和 out.height 块选项设置为“600px”,以增加图像尺寸。
- 您可以更改 dpi、out.width 和 out.height 选项,直到您获得所需的 HTML 输出文件大小和图像尺寸。输出文件大小和图像分辨率之间存在权衡。
编织代码后,我得到一个 HTML 输出文件大小等于 653kB,即使在绘制 5e4 个数据点时也是如此。
---
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)
```
为了防止带有许多点的散点图放大矢量图形(以及相应的 html 输出),您可以使用 ggrastr
包中的 geom_point_raster()
。吃蛋糕也要吃!