Crear una película a partir de una serie de gráficos en R

¿Hay alguna manera fácil de crear una “película” uniendo varias ttwigs dentro de R?

Aquí hay un método que encontré usando la ayuda de R:

Para crear marcos de imagen individuales:

jpeg("/tmp/foo%02d.jpg") for (i in 1:5) { my.plot(i) } dev.off() 

Para hacer la película, primero instale ImageMagick . Luego llame a la siguiente función (que llama “convertir”, parte de ImageMagick, supongo):

 make.mov < - function(){ unlink("plot.mpg") system("convert -delay 0.5 plot*.jpg plot.mpg") } 

O intente utilizar la función ffmpeg como se describe en este artículo (he encontrado que esto proporciona resultados más limpios): ffmpeg -r 25 -qscale 2 -i tmp / foo% 02d.jpg output.mp4

Puede requerir un poco de retoques, pero esto parecía bastante simple una vez que todo estaba instalado.

Por supuesto, en cualquier lugar que veas "jpg" o "jpeg", puedes sustituir GIF o PNG para que te guste.

Eche un vistazo al paquete de animación creado por Yihui Xie o al paquete de bioconductor EBImage (? Animado).

Creo que puedes hacer esto también con la función write.gif en la biblioteca caTools. Tendría que obtener su gráfico en una imagen de múltiples cuadros primero. No estoy seguro de cómo hacer eso. ¿Nadie? Bueller?

El ejemplo clásico de un GIF animado es este código que no escribí pero publiqué hace algún tiempo:

 library(fields) # for tim.colors library(caTools) # for write.gif m = 400 # grid size C = complex( real=rep(seq(-1.8,0.6, length.out=m), each=m ), imag=rep(seq(-1.2,1.2, length.out=m), m ) ) C = matrix(C,m,m) Z = 0 X = array(0, c(m,m,20)) for (k in 1:20) { Z = Z^2+C X[,,k] = exp(-abs(Z)) } image(X[,,k], col=tim.colors(256)) # show final image in R write.gif(X, 'Mandelbrot.gif', col=tim.colors(256), delay=100) 

El crédito del código es para Jarek Tuszynski, PhD.

Si envuelve su secuencia de comandos R dentro de un Perl / Python / etc mayor. secuencia de comandos, puede unir gráficos junto con su herramienta de costura de imagen de línea de comandos favorita.

Para ejecutar su secuencia de comandos R con un script de envoltura, use el método R CMD BATCH .

No estoy seguro de que sea posible en R. Hice un proyecto una vez cuando los puntos de datos de R se exportaron a una base de datos MySQL y una aplicación Flex / Flash recogió esos puntos de datos y dio visualizaciones animadas.

He hecho algunas películas con XNview (freeware graphics viewer) Crear función de presentación de diapositivas. Quería mostrar tendencias a lo largo del tiempo con datos espaciales, así que acabo de crear una serie de gráficos, nombrados secuencialmente [pegar () es su amigo para todo tipo de nombres calisteticos] luego los cargué en diapositivas de diapositivas de XNviews y establecí algunas variables de temporizador voila Tomó 5 minutos aprender cómo hacerlo y producir algunos gráficos ejecutables.

Aquí hay un ejemplo completo sobre cómo hacer una “película” animada GIF desde un archivo HDF5. Los datos deben ser un dataset HDF de una matriz tridimensional [Nframes] [Nrows] [Ncolumns].

 # # be sure to be run as Administrator to install new packages # source("http://bioconductor.org/biocLite.R") biocLite("rhdf5") install.packages('caTools') install.packages('fields') library(caTools) library(fields) library(rhdf5) x = h5read(file="mydata.h5",name="/Images") write.gif(x,"movie1.gif",col=rainbow,delay=10,flip=TRUE)