我正在研究在 R 中创建动画的可能性。{Animation} 包似乎主要是 ffmpeg 和 imagemagick 的 R 平台。我发现创建单个图像帧的唯一参考是嵌套plot()
在循环中。但鉴于png()
渲染器的速度性能较差,特别是对于包含地图对象的绘图,这似乎是一个难以实现的缓慢过程,用于生成更复杂的绘图 - 例如:
library(maptools)
data(wrld_simpl)
starttime = Sys.time()
for(i in 1:10){
png(paste('frames/', i, '.png', sep=''))
plot(wrld_simpl, col='grey85', bg = 'white', border='white')
points(sample(-180:180, 50), sample(-90:90, 50), col='red', pch=16, cex=2)
title('poxy map')
dev.off()
}
print(Sys.time() - starttime)
产生 10 帧和:
Time difference of 9.763794 secs
我不明白为什么 R 的渲染速度如此之慢——以这种速度,以 25fps 的速度渲染一个 2 分钟的视频需要 45 分钟左右,对于这个相对简单的地图示例来说,这似乎很慢。包裹起来apply
并不快。有谁知道一种plot
更有效地包装的方法,或者在渲染不变的元素后中途保存一个情节?