Articles - R

Cr?er une image .gif anim?e avec R et ImageMagick

  |   4001  |  Poster commentaire  |  R


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/

Licence - Pas d?Utilisation Commerciale - Partage dans les M?mes Conditions
Licence Creative Commons