我正在通过类似于以下内容的脚本创建动画

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()是否可以“看到”正在绘制的内容,而不必在屏幕上实际绘制?还有其他方法可以提高脚本速度吗?

最佳答案

您应该能够将所有qplots计算并存储在列表或其他数据结构中,而不是在计算循环中打印它们。然后再次遍历并全部打印-当您不在同一循环中处理计算和打印时,它应该快得多。

09-05 14:47