有没有一种简单的方法在R语言中将多个图表拼接成一个“电影”?
我找到了一个使用R帮助的方法:
创建单独的图像框架:
jpeg("/tmp/foo%02d.jpg")
for (i in 1:5) {
my.plot(i)
}
dev.off()
要制作电影,首先要安装ImageMagick。 然后调用以下函数(该函数调用 ImageMagick 的“convert”命令):
make.mov <- function(){
unlink("plot.mpg")
system("convert -delay 0.5 plot*.jpg plot.mpg")
}
或者尝试使用本文章中描述的ffmpeg函数(我发现这会给出更干净的结果):
ffmpeg -r 25 -qscale 2 -i tmp/foo%02d.jpg output.mp4
可能需要一些调整,但是在安装了所有必要组件后,这看起来相当简单。
当然,你可以根据自己的喜好将任何“jpg”或“jpeg”替换为GIF或PNG。
我认为你也可以使用caTools库中的write.gif函数来完成此操作。你需要先将你的图形转换成多帧图像。我不确定如何做到这一点。有人知道吗?
动画GIF的经典示例是这个代码,我没有编写,但我之前博客过:
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)
代码版权归Jarek Tuszynski博士所有。
Mandelbrot.gif
周围的引号为普通引号(即删除它们并在脚本中键入新的引号)。 - CCIDR CMD BATCH
方法。#
# 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)
我不确定在R中是否可能。我曾经做过一个项目,将来自R的数据点导出到MySQL数据库中,然后Flex/Flash应用程序接收这些数据点并提供动画可视化效果。
system("convert -delay 80 *.png example_1.gif")
时,出现了错误Invalid Parameter - 80
。我指定了 `ani.options( convert = shQuote('C:/Program Files/ImageMagick-7.0.5-Q16/convert.exe')convert = shQuote('C:/Windows/System32/convert.exe')
)`。有什么想法吗? - quant