我正在玩一段代码,想用 ggplot2 重新绘制一个情节,但遇到了一个巨大的性能问题。也许我做错了什么,但在互联网上寻找类似的问题,并没有找到相关的话题。
使用图形包中的绘图功能并在循环中添加线条非常快。
关于如何使用 ggplot2 提高性能的任何建议,或者这就是它的工作方式?
library(bootstrap); data(stamp);
nobs <- dim(stamp)[1]
dens <- density(stamp$Thickness)
# this is using the graphics plot
plot(density(stamp$Thickness),col="black",lwd=3)
for(i in 1:100){
newThick <- rnorm(nobs,mean=stamp$Thickness,sd=dens$bw)
lines(density(newThick),col="grey",lwd=3)
}
# now try something similar using ggplot2
require(ggplot2)
g = ggplot(data.frame(Thickness = stamp[["Thickness"]]), aes(x = Thickness)) + geom_density()
for(i in 1:100){
newThick <- rnorm(nobs,mean=stamp$Thickness,sd=dens$bw)
g = g + geom_density(data = data.frame(new = newThick), aes(x = new), colour = 'gray')
}
g
它太慢了。之后尝试了 1000 个循环,我运行它的虚拟机很快就耗尽了 RAM。同样,图形中的绘图功能没有问题。