Generando gráficos 3D en movimiento con R

movie

En esta entrada explicamos cómo elaborar un gráfico 3D en movimiento con R. Además veremos cómo exportarlo en formato .gif. Utilizamos para ello la librería rgl de R.

Preparando los datos

Leemos el fichero de datos con el que queremos trabajar.

biom <- read.table("http://ares.inf.um.es/00Rteam/datos/biom2003.dat")

Verificamos una lectura adecuada con un simple vistazo de las primeras filas de biom:

head( biom )

Comprobamos que el número de filas y columnas es adecuado:

dim( biom )

Pasamos a elaborar nuestro gráfico en 3 dimensiones.

Gráficos 3D

Cargamos la librería rgl y elaboramos el gráfico con la función plot3d().

library( rgl )
plot3d( biom$Altura, biom$Peso, biom$Hombros, 
        col = biom$Sexo, type = "s", radius = 1.5 )

Para ver nuestro gráfico en movimiento utilizamos la función play3d() cuyos argumentos son

  • spin3d(): para girar el gráfico.
  • duration: tiempo que está en movimiento (seg.)

La expresión quedaría:

play3d( spin3d(  ), duration = 10 )

Podemos añadirle a la función spin3d() los argumentos axis y rpm, con los que indicamos los ejes y la velocidad de rotación.

play3d( spin3d( axis = c(0, 0, 1), rpm = 7), duration = 10 )

Exportar el gráfico 3D a un arhivo gif

Para guardar el gráfico en movimiento tenemos que usar la función movie3d(), que hace lo mismo que la función movie3d() pero añade argumentos para exportar el gráfico:

  • dir: directorio donde queremos guardar el fichero .gif
  • type = "gif": para indicarle que lo exporte

La expresión quedaría:

movie3d( spin3d( axis = c(0, 0, 1), rpm = 7), 
         duration = 10, dir = getwd(),
         type = "gif" )

La función movie3d() además del archivo .gif guarda cada frame en un archivo .png para hacer una película. Podemos decirle con el argumento clean = TRUE que una vez terminado borre los frames y nos deje sólo el archivo .gif.

movie3d( spin3d( axis = c(0, 0, 1), rpm = 7),
         duration = 10, dir = getwd(),
         type = "gif", clean =  TRUE )

El gráfico que obtenemos es el siguiente:

movie

10 Respuestas a “Generando gráficos 3D en movimiento con R

  1. Flipante. No tenía ni idea que podíamos hacer también animaciones (gif en movimiento). Me he quedado turulato… Ya estoy pensando dónde voy a usarlo 🙂
    Muchas gracias por compartirlo!

  2. vaya chulada!!

  3. Al intentar usar movie3d el sistema me indica que me falta ImageMagick. Me he instalado ese programa y deduzco que es el que usa R para confeccionar el gif a partir de los frame que genera, pero a pesar de haberlo instalado, el sistema me sigue diciendo que el programa me falta. Debe faltarme indicarle a R donde lo he instalado o algo así, ¿estoy en lo cierto? Alguna indicación de cómo conseguir eso.

  4. Me ha encantado, tenía ganas de saber como exportarlo, en una presentación queda muy ilustrativo.

  5. Este paquete es ideal par exposiciones en congresos… los dejas embobaos, o turulatos… y así puede uno decir majaderías ( o decir mas aún)…

    Gracias pro compartir.

  6. Cordial saludo
    He intentado replicar este ejemplo en mi computadora pero me aparece este error : ‘ImageMagick’ not found
    In addition: Warning message:
    running command ‘C:\Windows\system32\cmd.exe /c convert –version’ had status 65535 .
    Instale ImageMagick (-7.0.2-7-Q16-HDRI-x64-dl) y busque en el directorio del programa convert.exe pero no existe, alguien tiene alguna recomendación de como solucionar este problema.

    Gracias por la atención prestada..
    P.D he buscado en diferentes fuentes y varios reportar este error mencionando que la solución es el cambio de la ruta, pero como sea el archivo no existe .

  7. Una vez exportado como.gif, como lo puedes visualizar? Gracias

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

To create code blocks or other preformatted text, indent by four spaces:

    This will be displayed in a monospaced font. The first four 
    spaces will be stripped off, but all other whitespace
    will be preserved.
    
    Markdown is turned off in code blocks:
     [This is not a link](http://example.com)

To create not a block, but an inline code span, use backticks:

Here is some inline `code`.

For more help see http://daringfireball.net/projects/markdown/syntax