使用ggplot
和shiny
,并绘制大量数据以生成一些互动图。
我遇到了一些性能问题,所以我用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
进行策划,因为他们没有分面,这是必不可少的。
有没有办法缓存绘图的构建,构建和渲染,所以我只需要绘制它,并且可以节省一半的时间?
(保存图片不可能,因为情节是互动的)
答案 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
但也要考虑你是否创造了正确的情节。例如,如果你绘制了数十万个点,你就会创建一个包含大量过度绘图的图。