R 缓存ggplot2绘图的一种方法
使用R 缓存ggplot2绘图的一种方法,r,caching,plot,ggplot2,R,Caching,Plot,Ggplot2,使用ggplot和shinny,绘制大量数据以生成一些交互式绘图 我有一些性能问题,所以我检查了benchplot()我的绘图时间,一些大型绘图的速度很慢。例如,这是我绘制其中一个图所花费的时间- step user.self sys.self elapsed 1 construct 0.093 0.005 0.101 2 build 1.528 0.044 1.583 3 render 3.292 0.070 3
ggplot
和shinny
,绘制大量数据以生成一些交互式绘图
我有一些性能问题,所以我检查了benchplot()
我的绘图时间,一些大型绘图的速度很慢。例如,这是我绘制其中一个图所花费的时间-
step user.self sys.self elapsed
1 construct 0.093 0.005 0.101
2 build 1.528 0.044 1.583
3 render 3.292 0.070 3.446
4 draw 3.102 0.189 3.521
5 TOTAL 8.015 0.308 8.651
我不能用ggvis
或ggbio
绘图,因为它们没有刻面,这是必不可少的
有没有办法缓存情节的构建、构建和渲染,所以我只需要按要求绘制,就能节省一半的时间
(不可能保存图片,因为绘图是交互式的)是的,有:
p <- ggplot(iris, (aes(x = Species, y = Sepal.Length))) +
geom_boxplot()
g <- ggplotGrob(p)
library(grid)
grid.newpage()
grid.draw(g)
system.time(print(p))
#user system elapsed
#0.11 0.00 0.11
system.time({
grid.newpage()
grid.draw(g)
})
#user system elapsed
#0.03 0.00 0.03
p你能提供一个答案吗?我想了想,但它真的没有意义。我的问题不是关于任何具体的数据,而是有没有办法在这个过程中缓存情节的进展。一个可重复的例子总是有意义的。请注意我如何在我的答案中创建一个。谢谢!你的建议是一个很好的开始,它节省了构建时间。对于构建/渲染,是否有相同的方法?(这需要更多的时间)我不确定这是否可能,我甚至不知道每一步是什么,试图找到一些信息,但没有成功。不,我认为这在网格图形系统中是不可能的。如果这些步骤花费了这么多时间,请参阅我答案中的最后一句话。谢谢!我看到了你写的东西,我不认为我使用了错误的情节,但它确实让我想到了一种方法,将它分成两个不同的情节,每个情节都要小得多。。现在就试试。