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你能提供一个答案吗?我想了想,但它真的没有意义。我的问题不是关于任何具体的数据,而是有没有办法在这个过程中缓存情节的进展。一个可重复的例子总是有意义的。请注意我如何在我的答案中创建一个。谢谢!你的建议是一个很好的开始,它节省了构建时间。对于构建/渲染,是否有相同的方法?(这需要更多的时间)我不确定这是否可能,我甚至不知道每一步是什么,试图找到一些信息,但没有成功。不,我认为这在网格图形系统中是不可能的。如果这些步骤花费了这么多时间,请参阅我答案中的最后一句话。谢谢!我看到了你写的东西,我不认为我使用了错误的情节,但它确实让我想到了一种方法,将它分成两个不同的情节,每个情节都要小得多。。现在就试试。