从R中的一系列剧情创作电影

Rya*_*rio 48 graphics video movies r movieclip

是否有一种简单的方法可以通过在R中拼接几个图来创建"电影"?

Rya*_*rio 40

这是我使用R帮助找到的一种方法:

要创建单个图像框架:

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

要制作电影,请先安装ImageMagick.然后调用以下函数(调用"convert",我想象的是ImageMagick的一部分):

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

或尝试使用,因为这所描述的功能ffmpeg的文章(我发现这给清洁效果):ffmpeg的-r 25 -qscale 2 -i TMP /富%02d.jpg output.mp4

可能需要一些修补,但一旦安装完所有,这似乎很简单.

当然,无论你看到"jpg"还是"jpeg",都可以用GIF或PNG代替你的喜好.

  • 您甚至可以将 jpeg() 和 dev.off() 保留在循环之外——如果您使用适当的文件名,例如 jpeg("/tmp/foo%02d.png"),R 将在您的循环期间简单地创建新文件。您无需计算文件名。使它更容易。 (2认同)
  • 当我运行 `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') ) `. 有任何想法吗 ? (2认同)

Pao*_*olo 14

看看由Yihui Xie创建的动画包或EBImage bioconductor包(?animate).


JD *_*ong 10

我认为您也可以使用caTools库中的write.gif函数执行此操作.您必须先将图形转换为多帧图像.我不知道该怎么做.任何人?Bueller?

动画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)
Run Code Online (Sandbox Code Playgroud)

代码归功于Jarek Tuszynski博士.