是否有一种简单的方法可以通过在R?
中拼接几个图来创建“电影”答案 0 :(得分:39)
以下是我使用R帮助找到的一种方法:
创建单个图像框架:
jpeg("/tmp/foo%02d.jpg")
for (i in 1:5) {
my.plot(i)
}
dev.off()
要制作电影,请先安装ImageMagick。 然后调用以下函数(调用“convert”,我认为是ImageMagick的一部分):
make.mov <- function(){
unlink("plot.mpg")
system("convert -delay 0.5 plot*.jpg plot.mpg")
}
或者尝试使用f {{{}}中描述的ffmpeg函数(我发现这样可以得到更清晰的结果): ffmpeg -r 25 -qscale 2 -i tmp / foo%02d.jpg output.mp4
可能需要一些修补,但是一旦安装完毕,这似乎很简单。
当然,无论你看到“jpg”还是“jpeg”,你都可以用GIF或PNG代替你的喜好。
答案 1 :(得分:14)
答案 2 :(得分:10)
我认为您也可以使用caTools库中的write.gif函数执行此操作。您必须先将图形转换为多帧图像。我不知道该怎么做。任何人? Bueller?
动画GIF的经典示例是这段代码,我没有写,但我前段时间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)
代码归功于Jarek Tuszynski博士。
答案 3 :(得分:2)
如果将R脚本包装在更大的Perl / Python / etc中。脚本,您可以使用您最喜欢的命令行图像拼接工具拼接图形。
要使用包装器脚本运行R脚本,请使用R CMD BATCH
方法。
答案 4 :(得分:0)
我不确定在R中是否可行。当R的数据点导出到MySQL数据库并且Flex / Flash应用程序获取这些数据点并给出动画可视化时,我做了一个项目。
答案 5 :(得分:0)
我使用XNview(免费软件图形查看器)创建幻灯片功能完成了一些电影。我想通过时间显示空间数据的趋势,所以我只创建了一系列图表,按顺序命名[paste()是各种命名calistethics的朋友]然后将它们加载到XNviews幻灯片对话框并设置一些计时器变量,瞧。花了5分钟学习如何操作并生成一些可执行的图形。
答案 6 :(得分:0)
以下是从HDF5文件制作动画GIF“电影”的完整示例。数据应该是三维数组的HDF数据集[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)