2015-05-27 24 views
8

Problem:animacja Działka w knitr rmarkdown

Witam, staram się zrobić animowany wykres w dokumencie rmarkdown. Tu jest mój kodu:

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

Pętla praca w porządku, i przekazywane do funkcji, I'am w stanie zapisać w kilku formatach z „saveLatex”, „saveHTML” lub „saveVideo”. Jednak, gdy „na drutach” plik .Rmd w celu uzyskania pliku PDF, animacja nie wydaje się, że jest tylko ten wiersz napisany:

video of chunk lmSim 

Gdybym drutach go w HTML, tylko przycisk luz wideo jest wyświetlane. Jeśli jednak otworzę kod HTML w mojej przeglądarce (firefox), zostanie on wyświetlony poprawnie.

Brak wyświetlonego komunikatu błędu. Używam wersji 3.2.0 R, najnowszej wersji R Studio, wersji 1.10.5 knitr na MacBook Pro Yosemite. Nie znalazłem żadnych istotnych informacji ani dokumentacji, które rozwiązałyby mój problem.

Pytania:

Tak, jest to po prostu niemożliwe, aby mieć osadzone animację do pliku PDF wygenerowanego z rmarkdown/knitr?

Czy muszę zainstalować inny program do obsługi filmów w formacie PDF (mam ffmpeg na moim komputerze)?

Wielkie dzięki!

Dzięki Yihui! To działa bardzo dobrze z następującymi ustawieniami (odczyt z Adobe PDF):

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

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

Jeśli tylko format, który chcesz to PDF, może można spróbować opcję kawałek ' out.width = "". Pamiętaj, że będziesz musiał umieścić '\ usepackage {animate}' w nagłówku (http://rmarkdown.rstudio.com/pdf_document_format.html), a także użyć Acrobat Reader, aby wyświetlić plik PDF. Jeśli to zadziała, wyjaśnię to w odpowiedzi. –

Odpowiedz

9

próbowałeś z ggplot i gganimation? Na przykład:

library(gapminder) 
library(gganimate) 
library(ggplot) 

head(gapminder) 
theme_set(theme_bw()) 

p <- ggplot(gapminder, aes(gdpPercap, lifeExp, size = 1, color = continent, frame = year)) + 
    geom_point() + 
    scale_x_log10() 


animation<-gganimate(p, "your_animation.gif")#Or to your path 

Zobacz, że musisz najpierw zapisać swoją animację. Musisz ustalić swój katalog roboczy.

Po można nazwać to z czatu lub HTML obniżki (nie z uchwytem R) jak:

![your caption here](your_animation.gif) 
Powiązane problemy