在knitr rmarkdown中绘制动画

时间:2015-05-27 07:42:35

标签: r knitr r-markdown

问题:

嗨,我尝试在rmarkdown文档中制作动画情节。这是我的代码:

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

循环工作正常,并传递给一个函数,我能够以多种格式将其保存为&#39; saveLatex&#39;,&#39; saveHTML&#39;或者&#39; saveVideo&#39;。然而,当&#39;编织&#39; .Rmd文件为了获取PDF,动画没有出现,只有这一行写的:

video of chunk lmSim

如果我用HTML编织,只显示视频的播放按钮。但是,如果我在浏览器(Firefox)中打开HTML,它会正确显示。

没有显示错误消息。我在MacBook Pro Yosemite上使用R版本3.2.0,最新的R Studio版本,1.10.5 knitr版本。我没有找到任何相关的信息或文件来解决我的问题。

问题:

那么,是否可以将嵌入动画插入到使用rmarkdown / knitr生成的PDF中?

我是否必须安装另一个程序来处理PDF格式的视频(我的计算机上有ffmpeg)?

非常感谢!

谢谢一惠!它适用于以下设置(使用Adobe阅读PDF):

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

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

2 个答案:

答案 0 :(得分:11)

你试过ggplot和gganimation吗?例如:

![your caption here](your_animation.gif)

看到你需要先保存你的动画。您需要建立工作目录。

之后你可以通过聊天或html in markdown(而不是来自R chuck)来调用它,如:

onsuccess

答案 1 :(得分:0)

这个答案可能为时已晚,但希望可以帮助其他人。我建议将 R 代码作为单独文件保存并运行在同一目录中,并且仅将动画导入为 gif 以减少演示中的延迟。这在 ioslides 中对我有用:

## Time series visualization

![time series](myanimation.gif){width=80%}