graphiqe tikz (animé) avec R
dans LaTeX
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.
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 :
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) :
Réponses
-
Impressionnant.
Je suppose qu'il faut passer un paramètre particulier à latex, pour qu'il autorise l'exécution externe de R par tikz ? -
Non aléa, tout simplement R écrit le code LaTeX, et ensuite c'est LaTeX qui compile.
-
OK, je n'avais pas compris. Merci.
-
Petite vidéo de démo de RStudio+knitr par son auteur.
Infos utiles pour installer le package tikzDevice : http://lightonphiri.org/blog/r-graphical-representation-installing-tikzdevice-package -
Merci sieur Steven Neutral,
S -
Hey attention ! Je vois qu'il y a des morceaux du code qui ne sont pas passés sur le forum (dans les deux lignes avec <>=).
[Correction faite. AD]
Connectez-vous ou Inscrivez-vous pour répondre.
Bonjour!
Catégories
- 165.5K Toutes les catégories
- 64 Collège/Lycée
- 22.2K Algèbre
- 37.6K Analyse
- 6.3K Arithmétique
- 61 Catégories et structures
- 1.1K Combinatoire et Graphes
- 13 Sciences des données
- 5.1K Concours et Examens
- 26 CultureMath
- 51 Enseignement à distance
- 2.9K Fondements et Logique
- 10.8K Géométrie
- 85 Géométrie différentielle
- 1.1K Histoire des Mathématiques
- 79 Informatique théorique
- 3.9K LaTeX
- 39K Les-mathématiques
- 3.5K Livres, articles, revues, (...)
- 2.7K Logiciels pour les mathématiques
- 29 Mathématiques et finance
- 343 Mathématiques et Physique
- 5K Mathématiques et Société
- 3.4K Pédagogie, enseignement, orientation
- 10.1K Probabilités, théorie de la mesure
- 804 Shtam
- 4.2K Statistiques
- 3.8K Topologie
- 1.4K Vie du Forum et de ses membres