The R package animation has a function saveLatex()
which creates a tex
document (and compiles it) with the animation created by your R code. It essentially produces the individual image files and a tex
file that uses the LaTeX package animate to create the animation in the pdf. Here is an example of an R code that creates a tex
document.
library(datasets) library(dplyr) library(animation) data(airquality) months <- 5:9 saveLatex(expr=c(for (i in months) { data <- filter(airquality, Month == i) plot(x = data$Temp, y = data$Ozone) }), interval=4, img.name = "Rplot", latex.filename="TexFromR.tex", outdir=getwd(), documentclass="article")
It saves 5 image files Rplot1.png … Rplot5.png (there are 5 different months in the airquality dataset) and the TexFromR.tex file, as well as compiles the tex
file into a pdf. The TexFromR.tex file will then look like this.
\documentclass{article} \usepackage{animate} \begin{document} \begin{figure} \begin{center} \animategraphics[controls,width=\linewidth]{0.25}{Rplot}{1}{5} \end{center} \end{figure} \end{document}
The corresponding pdf with the animation can be viewed here. The animations are unfortunately only supported by some pdf readers (AcrobatReader, PDF-XChange, acroread, and Foxit Reader). For visualization here is also an animated screen capture.
There are many options that you can use in saveLatex()
to customize the tex
output. Among them is documentclass
which defines the LaTeX document class and if set to NULL
will not produce a complete LaTeX document, but only the code to generate the PDF animation will be printed in the console. This code can then be used in your tex
file with the LaTeX package animate.
jd
For those who haven’t created an object called months with the appropriate values, they will get an error indicating that they’re for loop is incorrect.
so, adding
months<-5:9
before your begin the saveLatex… will allow this to run correctly.
tom
Hi jd,
Thank you for your comment. I updated the example.
Best, Tom