Il s'agit d'un package R pour convertir les graphiques R en fichier flash (format SWF). La conversion peut être effectuée de deux manières différentes:
plot() et lines() . La convention est que chaque fois que vous appelez une fonction de traçage de haut niveau, par exemple plot() , le film créera un nouveau cadre et dessinera les formes suivantes dans ce cadre. De cette façon, vous pouvez créer une animation en appelant une série de fonctions plot() .svg2swf() pour convertir de SVG en SWF, et image2swf() pour convertir les images PNG et JPG en un seul fichier SWF. R2SWF dépend des bibliothèques suivantes:
Le code source de libming est inclus dans R2SWF , et vous devez installer les trois autres par vous-même.
Pour les utilisateurs de Debian / Ubuntu, la commande pour installer des bibliothèques dépendantes est
sudo apt-get install zlib1g-dev libpng12-dev libfreetype6-dev
Pour les systèmes basés sur RPM (par exemple Fedora), essayez de fonctionner
sudo yum install zlib-devel libpng-devel freetype-devel
Dans le premier exemple, nous créons d'abord 20 images à l'aide de la fonction png() , puis les convertissons en un seul fichier SWF R2SWF-ex1.swf .
# # Creating png files
png( " image-png-%03d.png " , 480 , 300 )
x = seq( 0 , 2 * pi , length.out = 20 )
cols = rainbow( 20 )
for ( i in 1 : 20 ) plot( x [ i ], sin( x [ i ]), xlim = c( 0 , 2 * pi ), ylim = c( - 1 , 1 ),
col = cols [ i ], pch = 16 , cex = 2 , main = " PNG => SWF " )
dev.off()
# # Obtain the filenames
pngfiles = sprintf( " image-png-%03d.png " , 1 : 20 )
# # Convert to SWF
image2swf( pngfiles , " R2SWF-ex1.swf " , interval = 0.3 )
L'utilisation de svg2swf est assez similaire, sauf que l'animation de sortie contient des graphiques vectoriels.
# # Do similar things as above
svg( " image-svg-%03d.svg " , 8 , 5 )
x = seq( 0 , 2 * pi , length.out = 20 )
cols = rainbow( 20 )
for ( i in 1 : 20 ) plot( x [ i ], sin( x [ i ]), xlim = c( 0 , 2 * pi ), ylim = c( - 1 , 1 ),
col = cols [ i ], pch = 16 , cex = 2 , main = " SVG => SWF " )
dev.off()
svgfiles = sprintf( " image-svg-%03d.svg " , 1 : 20 )
# # Convert to SWF
svg2swf( svgfiles , " R2SWF-ex2.swf " , interval = 0.3 )
Le troisième exemple montre comment utiliser le périphérique SWF pour créer directement (plutôt que de convertir) le fichier SWF directement.
swf( " R2SWF-ex3.swf " )
set.seed( 123 )
x = rnorm( 5 )
y = rnorm( 5 )
for ( i in 1 : 100 ) {
plot( x <- x + 0.1 * rnorm( 5 ), y <- y + 0.1 * rnorm( 5 ),
xlim = c( - 3 , 3 ), ylim = c( - 3 , 3 ), col = " steelblue " ,
pch = 16 , cex = 2 , xlab = " x " , ylab = " y " )
title( " Brownian Motion " )
}
dev.off() En général, lors de l'utilisation du périphérique SWF, les fonctions de traçage de haut niveau (par exemple plot() ) feront progresser le film par une seule trame, et les fonctions de bas niveau ( lines() , text() , etc.) ne sont efficaces qu'à la trame actuelle.