knitr / rmarkdown-减小html文件的大小

问题描述 投票:8回答:2

我想使用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

```

html rstudio knitr resolution r-markdown
2个回答
9
投票

根据@daroczig的建议使用“ dpi”编织块选项,我对您的代码进行了如下修改(请参见下文)。

  • 您已经将dev chunk选项设置为等于“ svg”,这会生成非常大的矢量图形文件,尤其是对于由许多元素(点,线等)组成的图像。
  • 我将开发块选项设置回等于“ png”,这是HTML输出的默认栅格图形格式。因此,您根本不需要触摸它。保持dev chunk选项等于“ png”可以大大减少HTML输出文件的大小。
  • 我将dpi块选项设置为等于36(默认值为72),以降低图像分辨率并进一步减小HTML输出文件的大小。
  • 我将out.width和out.height块选项设置为等于“ 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)
```

0
投票

[为了防止散点图炸毁矢量图形(以及相应的html输出),您可以使用geom_point_raster()包中的ggrastr。吃蛋糕,也吃!

© www.soinside.com 2019 - 2024. All rights reserved.