2016-08-27 8 views
1

Ursprünglich wollte ich ein Dokument zu stricken und svg und png Versionen der Plots zur gleichen Zeit zu generieren.R: Plot mehrere Dateiformate auf einmal

Ich überprüfte die Dokumentation knitr und fand heraus, dass in opts_chunk$set(dev = ...) können Sie Ihre eigene Funktion, die Plots akzeptiert einstellen.

Aber das ist auch nicht so einfach wie der Anruf von svg(); pdf() öffnet beide Geräte, aber nur die letzte wird den Ausgang erzeugen.

Irgendwelche Ideen?

+0

Generieren Sie HTML-Ausgabe? Und wenn ja, ist die Idee, das PNG im HTML und das SVG extern gespeichert zu haben? –

+0

Verwenden Sie RMarkdown? Oder knitr allein? –

+2

'dev = c (" png "," svg "," pdf ")' – hrbrmstr

Antwort

3

Wenn Sie mit RMarkdown arbeiten und versuchen, jede Handlung in mehreren Formaten ausgegeben zu haben, können Sie tun:

--- 
output: 
    html_document: 
    self_contained: false 
--- 

```{r} 
library(knitr) 
opts_chunk$set(dev=c('png', 'svg')) 
``` 

```{r} 
plot(rnorm(10), rnorm(10)) 
``` 

Wenn Ihre Datei „README.Rmd“ genannt wird, dann werden die Bilder gespeichert werden zu .

Die self_contained teilt Rmarkdown mit, um Bilder (und andere Ressourcen wie JavaScript) extern zu speichern, anstatt sie direkt in die HTML-Datei einzubetten.

Die Option dev (siehe knitr docs) kann einfach einen Vektor aller Formate übergeben werden, in denen das Diagramm gespeichert werden soll.

+0

Aber es ist wirklich undokumentiert, dass Sie einen Vektor weitergeben können, oder bin ich blind? –

+1

@Jakob es ist da - in der Dokumentation für 'dev' in der [Chunk-Optionen] (http://yihui.name/knitr/options/#chunk_options) Abschnitt der Knitr Docs begraben. Einfach zu übersehen, obwohl;) –