2015-05-27 23 views
8

Sự cố:Hình động hoạt ảnh trong knitr rmarkdown

Xin chào, tôi cố gắng tạo một ô hoạt hình trong tài liệu hướng dẫn lại. Đây là mã của tôi:

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

Vòng lặp công việc tốt, và thông qua vào một chức năng, I'am thể lưu nó trong một số định dạng với 'saveLatex', 'saveHTML' hoặc 'saveVideo'. Tuy nhiên, khi 'đan' file .Rmd để có được một file PDF, hình ảnh động không xuất hiện, đó chỉ là dòng này viết:

video of chunk lmSim 

Nếu tôi đan nó dưới dạng HTML, chỉ vào nút play của video được hiển thị. Tuy nhiên, nếu tôi mở HTML trong trình duyệt của tôi (firefox) nó được hiển thị chính xác.

Không có thông báo lỗi nào được hiển thị. Tôi đang sử dụng phiên bản R 3.2.0, phiên bản R Studio mới nhất, phiên bản 1.10.5 knitr trên MacBook Pro Yosemite. Tôi không tìm thấy bất kỳ thông tin hoặc tài liệu liên quan nào để giải quyết vấn đề của mình.

Câu hỏi:

Vì vậy, chỉ đơn giản là có thể đưa hoạt ảnh được nhúng vào PDF được tạo bằng rmarkdown/knitr?

Tôi có phải cài đặt chương trình khác để xử lý video bằng PDF (tôi có ffmpeg trên máy tính của mình) không?

Rất cám ơn!

Cảm ơn Yihui! Nó hoạt động rất tốt với các cài đặt sau (đọc PDF với Adobe):

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

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

Nếu định dạng đầu ra duy nhất mà bạn muốn là PDF, có lẽ bạn có thể thử các tùy chọn đoạn ' out.width = '' '. Xin lưu ý rằng bạn sẽ phải bao gồm '\ usepackage {animate}' trong tiêu đề (http://rmarkdown.rstudio.com/pdf_document_format.html), và cũng sử dụng Acrobat Reader để xem PDF. Nếu điều này làm việc, tôi sẽ giải thích nó trong một câu trả lời. –

Trả lời

9

Bạn đã thử với ggplot và gganimation chưa? Ví dụ:

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 

Xem bạn cần lưu trước hoạt ảnh của mình. Bạn cần phải thiết lập thư mục công việc của bạn.

Sau khi bạn có thể gọi nó từ chat hoặc html trong markdown (không phải từ chuck R) như:

![your caption here](your_animation.gif) 
Các vấn đề liên quan