一种缓存ggplot2图的方法

时间:2016-11-14 09:24:05

标签: r caching plot ggplot2

使用ggplotshiny,并绘制大量数据以生成一些互动图。

我遇到了一些性能问题,所以我用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

我无法使用ggvisggbio进行策划,因为他们没有分面,这是必不可少的。

有没有办法缓存绘图的构建,构建和渲染,所以我只需要绘制它,并且可以节省一半的时间?

(保存图片不可能,因为情节是互动的)

1 个答案:

答案 0 :(得分:3)

是的,有:

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 

但也要考虑你是否创造了正确的情节。例如,如果你绘制了数十万个点,你就会创建一个包含大量过度绘图的图。