Cr?er une image .gif anim?e avec R et ImageMagick
Le but de ce tutoriel est de vous montrer les ?tapes ? suivre pour cr?er une image gif anim?e avec R et ImageMagick. Il vous faut d'abord installer ImageMagick si vous ne l'avez pas d?j?.
Il est aussi possible de cr?er des images .gif anim?es en utilisant uniquement R, gr?ce ? la fonction write.gif() du package caTools
Les fonctions d?crites dans ce tutotriel ont ?t? test?es sur Mac OS X 10.6.8 avec R 2.13
Exemple 1 : Cr?er un compte ? rebours
code R
Le compte ? rebours d?compte de 10 ? 1. Nous allons le cr?er en 4 ?tapes.
1 - Cr?ation d'un r?pertoire de travail propre que l'on va appeler 'examples'.
2 - Cr?ation des images png, chacune contenant un chiffre ( de 10 ? 1).
3 - Cr?ation d'une seule image .gif en utilisant ImageMagick
4- suppression des fichiers png dont on n'a plus besoin
Ci-dessous le code R correspondant :
Code R :
#cr?ation d'un r?pertoire de travail dir.create("examples") #cr?ation du r?pertoire setwd("examples") # on se place dans le repertoire # Cr?ation des fichiers .png du compte ? rebours de 10 ? "GO!" png(file="example%02d.png", width=200, height=200) for (i in c(10:1, "G0!")){ plot.new() text(.5, .5, i, cex = 6) } dev.off() # Conversion des fichiers .png en un seul fichier .gif avec ImageMagick system("/opt/local/bin/convert -delay 80 *.png example_1.gif") # On supprime les fichiers .png file.remove(list.files(pattern=".png"))
1- La fonction system() ex?cute la commande de conversion comme dans un Terminal (console shell). J'ai mis le chemin absolu vers la commande convert. Dans mon cas c'est : /opt/local/bin/convert. Dans certains cas la commande system("convert -delay 80 *.png example_1.gif") marche.
2- le flag -delay correspond au temps d'affichage entre deux images ( c'est la vitesse de l'animation).
3-La partie "%02d" du nom de fichier permet d'incr?menter automatiquement le nom des fichiers .png gener?s
R?sultat
Le r?sulat est le suivant :
Exemple 2 : cr?ation d'un graphique 3D
Nous allons cr?er une surface 3D pour visualiser un mod?le lin?aire en utilisant le package lattice. Des graphiques 3D peuvent ?tre cr??s ?galement avec le package rgl.
Code R
Code R :
library(lattice) b0 <- 10 b1 <- .5 b2 <- .3 g <- expand.grid(x = 1:20, y = 1:20) g$z <- b0 + b1*g$x + b2*g$y png(file="example%03d.png", width=300, heigh=300) for (i in seq(0, 350 , 10)){ print(wireframe(z ~ x * y, data = g, screen = list(z = i, x = -60))) } dev.off() # conversion du pdf en gif, en utilisant ImageMagick system("/opt/local/bin/convert -delay 40 *.png example_2_reduced.gif") # On efface les fichiers png file.remove(list.files(pattern=".png"))
R?sultat
Source :
http://ryouready.wordpress.com/2010/11/21/animate-gif-images-in-r-imagemagick/