Nov 112009
Since animation 1.0-9, we will be able to create a PDF document with an animation embedded in it; the function is saveLatex(), and its usage is similar to saveMovie() and saveSWF(): you pass an R expression for creating animations to this function, and this expression will be evaluated in the function; the image frames get recorded by a graphics device. In the end, a LaTeX document is written in a directory, and we can get a PDF document by running pdflatex on the document.

In fact, the key point is the LaTeX package named animate, which can be used to insert image frames into a PDF document to generate an animation. The interface of animations created by this package is quite similar to the HTML animation page by the R package animation, moreover, it also uses JavaScript (in PDF) to animate the image frames.

Here is an example:

library(animation)
oopt = ani.options(interval = 0.1, nmax = 100)
## brownian motion: note the 'loop' option and how to set graphics
#    parameters with 'ani.first'
saveLatex({
    brownian.motion(pch = 21, cex = 5, col = "red", bg = "yellow",
        main = "Demonstration of Brownian Motion")
}, ani.basename = "BM", ani.opts = "controls,loop,width=0.8\\textwidth",
    ani.first = par(mar = c(3, 3, 1, 0.5), mgp = c(2, 0.5, 0),
        tcl = -0.3, cex.axis = 0.8, cex.lab = 0.8, cex.main = 1),
    latex.filename = "brownian.motion.tex")
ani.options(oopt)

Download the demo: Brownian Motion in PDF (205K)

The PDF document will be automatically opened if there is nothing wrong with LaTeX and your PDF viewer; if nothing happened, you can find the PDF document brownian.motion.pdf in the directory ani.options("outdir").

The animation will work in Acrobat Reader 9.0, and I do not know if other PDF viewers can deal with JavaScript correctly (AFAIK, the default PDF viewer in Mac OS will not).

Related Posts

4 Responses to “Create Animations in PDF Documents Using R”

Comments (4)
  1. yixuan says:

    Cool! But I couldn’t find the saveLatex() function in the latest version under R-Forge… :\ Anything wrong?
    By the way, is it more suitable to use “saveLaTeX()” instead of “saveLatex()”?

    • Yihui Xie says:

      Yes, you are thinking about the same problem as I did. The reason I used saveLatex is that I find R uses toLatex. Actually I rarely write LaTeX as Latex. :grin:

      The source package is on CRAN now. I have not tried R-Forge yet, but I guess the Windows binary package should be on CRAN within one day.

  2. Paul Hewson says:

    This is really great, thanks!
    Paul

  3. zwdbordeaux says:

    Cool!
    I just realized that you posted different poster here than those of your chinese blog. So, I have one more blog to visit now!

Leave a Reply

(required)

(required)

WWW.YIHUI.NAME XIE@YIHUI.NAME © 2007 - 2010 by Yihui Xie