¿Hay alguna manera fácil de crear una "película" uniendo varias tramas dentro de R?Crear una película a partir de una serie de trazados en R
Respuesta
Aquí es un método que encontré usando R ayuda:
Para crear los cuadros de imagen individuales:
jpeg("/tmp/foo%02d.jpg")
for (i in 1:5) {
my.plot(i)
}
dev.off()
para hacer la película, la primera instalación ImageMagick. luego llamar a la siguiente función (que llama a "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 esta article (que he encontrado que esto da 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 vea "jpg" o "jpeg", puede sustituir GIF o PNG para que se adapte a su fantasía.
No estoy seguro de que es 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 Flash/Flex recogió esos puntos de datos y dio visualizaciones animadas ..
No necesita una base de datos. En un bucle, guarde todas sus imágenes. Luego use una herramienta de línea de comandos para unirlos; imagemagick es una posibilidad. –
Sí, esta fue la manera más fácil.Supongo que debido a la modularidad del sistema operativo, realmente no es posible hacer esto en R a menos que R se compile con una biblioteca especial o similar. –
Esta es una técnica inteligente, Srirangan. Aprendí hace muchos años que cuando alguien dice 'no es posible', quiere decir 'no sé cómo hacerlo'. La parte más inteligente de la técnica es que en un foro como SO, alguien está obligado a decirle cómo hacerlo. No estoy siendo sarcástico, por cierto. REALMENTE pienso que es una buena técnica, y la voy a probar. Gracias Srirangan. – pavium
Si envuelve su secuencia de comandos R dentro de una 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
.
¿Por qué necesita otro idioma para usar una herramienta de línea de comandos? – hadley
Bueno, ¿dónde se necesita una secuencia de comandos de Perl/Python? Además, observe Rscript (y littler) como mejores alternativas a 'R CMD BATCH'. –
No necesita otro idioma. Puedes usar un caparazón como bash. Lo que quieras. Hay muchas opciones. Uso R CMD BATCH porque es más o menos universal en todas las plataformas. –
Creo que puede 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 el código que yo no escribo, pero lo hice hace algún tiempo blog about:
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)
de crédito Código va a Jarek Tuszynski, PhD.
Aparece un error en la última línea: "Error: entrada inesperada en" write.gif (X, "" " – Nova
Para el error anterior, cambie las comillas alrededor de' Mandelbrot.gif' en la última línea del código para comillas regulares (es decir, elimínelas y escriba nuevas comillas en su secuencia de comandos) – CCID
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)
- 1. ¿Cómo puedo crear una película de Quicktime a partir de una serie de imágenes generadas?
- 2. Cómo crear una película a partir de 5000 archivos PNG?
- 3. crear una serie de OHLC a partir de los datos de la pizarra utilizando R
- 4. cómo enumerar una serie de números a partir de 1
- 5. Java: ¿Cómo creo una película a partir de una matriz de imágenes?
- 6. Crear URL a partir de una cadena
- 7. Crear un vector a partir de un archivo en R
- 8. Construya una lista a partir de una serie de expresiones en Scala
- 9. ¿Cómo creo una película a partir de un conjunto de imágenes usando qtj y java?
- 10. ¿Cómo puedo crear una película con codificación H.264 a partir de un conjunto de imágenes en C#?
- 11. R: crear un vector llamado a partir de variables
- 12. Cómo crear una matriz Haskell a partir de una función
- 13. Crear una nueva expresión a partir de una expresión existente
- 14. R: Cálculo de deltas en una serie de tiempo
- 15. Crear método anónimo a partir de una cadena en C#
- 16. ¿Puedo navegar, acercar y alejar R trazados?
- 17. ¿Cómo puedo crear una barra de color estándar para una serie de gráficos en python
- 18. Crear un hash a partir de una matriz de claves
- 19. Crear menú PyQt a partir de una lista de cadenas
- 20. Crear video a partir de imágenes
- 21. Android: ¿cómo crear una carcasa Switch a partir de esto?
- 22. crear nuevo objeto Javascript a partir de una variable
- 23. cómo crear XElement a partir de una cadena?
- 24. Pase JSON a una película Flash
- 25. Cómo crear una colección paralela de Scala a partir de una colección de Java
- 26. Crear consulta MySQL para crear una tabla a partir de una tabla existente
- 27. R: ¿Llenar fechas que faltan en una serie temporal?
- 28. Imprimir trazados generados en una función utilizando R Markdown en RStudio
- 29. Crear una instancia de una clase a partir de una cadena
- 30. ¿Cómo escribo una macro de Clojure para crear una expresión regular a partir de una cadena?
Incluso puede mantener jpeg() y dev.off() fuera del bucle, si utiliza un nombre de archivo apropiado, como p. jpeg ("/ tmp/foo% 02d.png"), R simplemente creará nuevos archivos durante su ciclo. No es necesario que calcules el nombre del archivo. Lo hace aún más fácil. –
Debe hacer la corrección de Dirk y luego aceptar su propia respuesta. Buena solución. –
útil ... pero resulta difícil entender dónde se guarda el archivo .mpg después de ejecutar la función 'make.mov' en R? Estoy trabajando dentro de R studio en una plataforma Mac. – ToNoY