graphiqe tikz (animé) avec R

Je vous ai promis une petite démo, la voici.

D'abord, juste pour vous montrer à quoi va ressembler l'anim, je la fais en GIF animé avec la package animation de R.
library(animation)
saveGIF({
  x <- xx <- rnorm(2)
  y <- yy <- rnorm(2)
  for(i in 1:100){
    dev.hold()
    plot(x, y, xlim=c(-20,20), ylim=c(-20,20), 
         pch=21, cex=3, col=c("red","green"), bg=c("yellow","cyan"))
    text(x, y)
    x <- x + rnorm(2)
    y <- y + rnorm(2)
    xx <- rbind(xx,x)
    yy <- rbind(yy,y)
    j <- 1
    segments(xx[1:(i-1),j], yy[1:(i-1),j], xx[2:i,j], yy[2:i,j], col="yellow")
    j <- 2
    segments(xx[1:(i-1),j], yy[1:(i-1),j], xx[2:i,j], yy[2:i,j], col="cyan")
    ani.pause()
  }
}, 
        outdir=getwd(), 
        interval = 0.1, 
        ani.width = 600, 
        ani.height = 600)
On compile ce code dans R et ça donne ce gif animé :
tikzDevice de R, le plus simple est d'utiliser knitr dans RStudio, qui permet d'intégrer directement du code R dans un document LaTeX, de générer le code tikz des figures R, et qui a une fonctionnalité spécialement conçue pour faire des animations avec le package animate de LaTeX (l'option fig.show="animate"). Let's go :
\documentclass{article}
\usepackage{animate} 

\begin{document}

Deux trajectoires d'une particule brownienne $\bigl(B_1(t),B_2(t)\bigr)$ :

% initialisiation :
<< echo=FALSE >>=
  x <- xx <- rnorm(2)
  y <- yy <- rnorm(2)
@

% animation :
\begin{figure}[!h]
<< echo=FALSE, fig.width=6, fig.height=6, out.width='.9\\linewidth', fig.show='animate', tidy=FALSE, crop=TRUE, dev='tikz' >>=
  for(i in 1:100){
    plot(x, y, xlim=c(-20,20), ylim=c(-20,20), 
         pch=21, cex=3, col=c("red","green"), bg=c("yellow","cyan"),
         xlab="$B_1(t)$", ylab="$B_2(t)$")
    legend("topleft", legend=paste0("$t=", i, "$"))
    text(x, y)
    x <- x + rnorm(2)
    y <- y + rnorm(2)
    xx <- rbind(xx,x)
    yy <- rbind(yy,y)
    j <- 1
    segments(xx[1:(i-1),j], yy[1:(i-1),j], xx[2:i,j], yy[2:i,j], col="yellow")
    j <- 2
    segments(xx[1:(i-1),j], yy[1:(i-1),j], xx[2:i,j], yy[2:i,j], col="cyan")
  }
@
\end{figure}

\end{document}
On ouvre ce code dans RStudio, on clique sur un bouton ("Compile PDF"), et voilà le résultat (le code LaTeX avec du tikz est généré aussi mais je n'inclus que le pdf, à ouvrir dans Acrobat) :
28934

Réponses

Connectez-vous ou Inscrivez-vous pour répondre.