2015-09-06 29 views
6

Knitr/rmarkdown kullanarak bir html belgesi üretmek istiyorum. Şu anda, dosya 20MB bitti ve onu azaltmak için bir yol bulmaya çalışıyorum. Büyük dosya boyutu, büyük olasılıkla çok fazla noktaya sahip olan arazilerden kaynaklanıyor.knitr/rmarkdown - html dosya boyutunu küçültme

Çıkış türümü pdf olarak değiştirirseniz, onu 1,7MB'ye indirebilirim. Dosyamı bir html olarak saklarken azaltmanın bir yolu olup olmadığını merak ediyorum.

DÜZENLEME: Burada RStduio'da yaptığım minimal bir çalışma örneğidir.

--- 
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) 
``` 

Ayrıca, çok fazla gözlemim varsa, çizimin hiç üretilmediğini fark ettim. Sadece çıktıda soru işareti bulunan boş bir kutu alıyorum. (Aşağıya bakınız) şu şekilde "dpi" knitr öbek seçeneği kullanmak için @daroczig önerisi ardından

```{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

Dağılım araziler bir raster görüntüye kıyasla vektör formatında daha ağır olabilir, ama bu mevcut proje ile ilgili bir sorun değil, sen SVG ya da düşük çözünürlüklü görüntüleri deneyebilirsiniz. – daroczig

+0

@daroczig svg'yi denedim ve biraz yardımcı oldu, ancak çözünürlüğün nasıl azaltılacağını açıklayabilirim çünkü dosya boyutumu daha da küçültmek istiyorum ve görüntü kalitesini feda etmek zorunda kalmam umurumda değil. Asgari bir çalışma örneği ekleyerek yayınımı düzenledim. –

+0

Eğer 'knitr' kullanılıyorsa, [yığın seçenekleri] 'ne (http://yihui.name/knitr/options/) özellikle' dip 'ayarına bakın. – daroczig

cevap

7

, senin kod güncellenmiştir.

  • Hele sen birçok öğeden oluşuyor görüntüler için çok büyük vektör grafik dosyaları üretir dev yığın seçeneği eşit "svg" Ben dev set
  • (vb noktalar, çizgiler,) batmıştı HTML çıkışı için varsayılan raster grafik formatı olan "png" ye eşit yığın seçeneği. Yani ona dokunmana gerek yok. Dev yığın seçeneği "png" ye eşit tutulduğunda, HTML çıktı dosyası boyutu önemli ölçüde azalır.
  • Görüntü çözünürlüğünü azaltmak ve HTML çıktı dosyası boyutunu daha da azaltmak için dpi yığın seçeneğini 36 (72 varsayılan değer) olarak ayarladım.
  • Görüntü boyutlarını arttırmak için out.width ve out.height yığın seçeneklerini "600px" olarak ayarlıyorum.
  • HTML çıktı dosyası boyutunu ve görüntü boyutunu istediğiniz gibi elde edene kadar dpi, out.width ve out.height seçeneklerini değiştirebilirsiniz. Çıkış dosya boyutu ve görüntü çözünürlüğü arasında bir trade-off var.

Kodu ördükten sonra, 5e4 veri noktalarını çizerken bile, 653kB'ye eşit bir HTML çıktı dosyası boyutu aldım. ** birçok ** gözlemlerle

--- 
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) 
``` 
İlgili konular