循环ggplots创建动画:提高速度

时间:2013-06-29 05:29:30

标签: performance r animation ggplot2

我正在通过类似于以下

的脚本创建动画
require(ggplot2)
require(animation)

data(diamonds)

ani.record(reset=TRUE)
for (i in 1:100){
 rows <- sample(1:nrow(diamonds), i)
 temp.diamond <- diamonds[rows, ]
 qplot.temp <- qplot(carat, price, alpha=1/100, data=temp.diamond)
 print(qplot.temp)
 ani.record()
 dev.off()
}
ani.replay()

然而,脚本需要很长时间才能完成,并且随着i的增加而变得越来越慢。缓慢似乎是在打印显示器并将其关闭时(尽管切换dev.off()似乎并未显着影响速度)。

ani.record()是否有办法“看到”正在绘制的内容而无需在屏幕上实际绘制它?还有其他方法可以提高脚本的速度吗?

1 个答案:

答案 0 :(得分:2)

您应该能够在列表或其他数据结构中计算和存储所有qplot,而不是在计算循环期间打印它们。然后再次循环并打印它们 - 当你不在同一循环中处理计算+打印时,它应该更快。