2015-09-06 12 views
6

knitr/rmarkdownを使ってhtml文書を作成したいと思います。現在、ファイルは20MBを超えており、私はそれを減らす方法を見つけようとしています。ファイルサイズが大きいのはおそらく、私のプロットには多くの点があるからです。knitr/rmarkdown - htmlファイルサイズを小さくする

私の出力タイプをpdfに変更した場合、それを1.7MBまで減らすことができます。私はhtmlのままでファイルを減らす方法があるのだろうかと思っています。

EDIT:ここでは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 

`` `

+2

散布図は、ラスタ画像に比べてベクトル形式で重くなることができますが、それはあなたの現在のプロジェクトの問題ではない場合、あなたはSVGや低解像度の画像を試してみてください。 – daroczig

+0

@daroczig私はsvgを試しましたが、少し助けになりましたが、ファイルサイズをさらに減らしたいので、解像度を下げる方法を説明できます。イメージの品質を犠牲にしなければならないかどうかは気にしません。最小限の作業例を追加して私の投稿を編集しました。 –

+0

'knitr'を使っているなら、[チャンクオプション](http://yihui.name/knitr/options/)、特に' dip'設定を見てください。 – daroczig

答えて

7

"解像度" knitrチャンクオプションを使用する@daroczigの提案に続いて、以下のように、私は(下記参照)にコードを修正。あなたは、特に私がDEVを設定する多くの要素(点、線、など)

  • で構成された画像のために、非常に大きなベクトルグラフィックスファイルを生成し、「SVG」に等しいのdevのチャンクオプションを設定していた

    • チャンクオプションは、HTML出力用のデフォルトのラスタグラフィックスフォーマットである "png"に等しくなります。だからあなたはまったくそれに触れる必要はありません。 dev chunkオプションを "png"にすると、HTML出力ファイルのサイズが大幅に縮小されます。
    • dpiチャンクオプションを36に設定しました(デフォルトは72です)。イメージの解像度を下げ、HTML出力ファイルサイズをさらに小さくします。
    • out.widthとout.heightチャンクオプションを "600px"に設定してイメージのサイズを大きくしました。
    • HTML出力ファイルサイズとイメージディメンションが必要なものになるまで、dpi、out.width、およびout.heightオプションを変更できます。出力ファイルサイズとイメージ解像度の間にはトレードオフがあります。

    コードを編成した後、5e4データポイントをプロットしても、653kBに等しいHTML出力ファイルサイズが得られました。 **多くの**観察と

    --- 
    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) 
    ``` 
    
  • 関連する問題