循环 ggplots 创建动画:增加速度

4
我正在使用类似以下脚本的方式创建动画:
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() 是否有一种方法可以“看到”正在绘制的内容,而不必实际将其绘制在屏幕上?还有其他提高脚本速度的方法吗?

2
计算时间的增加并不令人惊讶,因为您的样本大小取决于i,而i的范围是从1到100。 - Roman Luštrik
3
"ggplot2很慢",也许你可以用基础图形或lattice来实现相同的效果?" - baptiste
1个回答

2

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接