2015-05-27 8 views
8

Problema:Animazione grafica in knitr rmarkdown

Ciao, cerco di creare una trama animata in un documento rmarkdown. Qui è il mio codice:

```{r lmSim, fig.show='animate'} 
library(animation) 
library(plyr) 

oopt = ani.options(interval = 0.3, nmax = 101) 

a <- sort(rnorm(100, 2)) 
b <- sort(rnorm(100, 7)) 
out <- vector("list", 101) 
for (i in 1:ani.options("nmax")) { 
    ji <- seq(from = 0, to = 5, by = .05) 
    a <- jitter(a, factor = 1, amount = ji[i]) 
    fab1 <- lm(a ~ b) 
    coe <- summary(fab1)$coefficients 
    r2 <- summary(fab1)$r.squared 
    if (coe[2, 4] < .0001) p <- " < .0001" 
    if (coe[2, 4] < .001 & coe[2, 4] > .0001) p <- " < .001" 
    if (coe[2, 4] > .01) p <- round(coe[2, 4], 3) 
    plot(a ~ b, main = "Linear model") 
    abline(fab1, col = "red", lw = 2) 
    text(x = min(b) + 2, y = max(a) - 1, 
     labels = paste("t = ", round(coe[2, 3], 3), ", p = ", p, ", R2 = ", round(r2, 3))) 
    out[[i]] <- c(coe[2, 3], coe[2, 4], r2) 
    ani.pause() 
    } 

ani.options(oopt) 
``` 

L'opera bene loop, e passato in una funzione, I'am in grado di salvare in diversi formati con 'saveLatex', 'saveHTML' o 'saveVideo'. Tuttavia, quando 'maglia' il file .RMD al fine di ottenere un PDF, l'animazione non appare, c'è solo questa riga scritta:

video of chunk lmSim 

Se ho maglia in HTML, solo il pulsante di riproduzione del il video è visualizzato. Tuttavia, se apro l'HTML nel mio browser (firefox) viene visualizzato correttamente.

Nessun messaggio di errore visualizzato. Sto usando R versione 3.2.0, l'ultima versione di R Studio, versione 1.10.5 knitr su un MacBook Pro Yosemite. Non ho trovato alcuna informazione o documentazione rilevante per risolvere il mio problema.

Domande:

Così, è semplicemente possibile avere un'animazione embeded in un PDF generato con rmarkdown/knitr?

Devo installare un altro programma per gestire i video in PDF (ho ffmpeg sul mio computer)?

Grazie mille!

Grazie Yihui! Funziona molto bene con le seguenti impostazioni (lettura del PDF con Adobe):

--- 
title: "Sim" 
author: "" 
header-includes: 
    - \usepackage{animate} 
... 
--- 

```{r lmSim, fig.show='animate', out.width = '6in'} 
+2

Se l'unico formato di output desiderato è PDF, forse si può provare l'opzione pezzo ' out.width = '' '. Tieni presente che dovrai includere '\ usepackage {animate}' nell'intestazione (http://rmarkdown.rstudio.com/pdf_document_format.html), e utilizzare anche Acrobat Reader per visualizzare il PDF. Se funziona, lo spiegherò in una risposta. –

risposta

9

Hai provato con ggplot e gganimation? Ad esempio:

Vedere che è necessario salvare prima l'animazione. Devi aver stabilito la tua directory di lavoro.

Dopo si può chiamare dalla chat o HTML in Markdown (non dal mandrino R) come:

![your caption here](your_animation.gif)