graphics - ojiva - superponer graficas en r ggplot
Crear una película a partir de una serie de gráficos en R (7)
¿Hay alguna manera fácil de crear una "película" uniendo varias tramas dentro de R?
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)
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 article (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.
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.
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.
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.
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
.