该ggplot2软件包很容易成为我曾经使用过的最好的绘图系统,除了性能对于较大的数据集(约50k点)并不是很好.我正在考虑通过Shiny提供网络分析,ggplot2用作绘图后端,但我对性能并不满意,特别是与基本图形相比.我的问题是,是否有任何具体方法来提高这种表现.
起点是以下代码示例:
library(ggplot2)
n = 86400 # a day in seconds
dat = data.frame(id = 1:n, val = sort(runif(n)))
dev.new()
gg_base = ggplot(dat, aes(x = id, y = val))
gg_point = gg_base + geom_point()
gg_line = gg_base + geom_line()
gg_both = gg_base + geom_point() + geom_line()
benchplot(gg_point)
benchplot(gg_line)
benchplot(gg_both)
system.time(plot(dat))
system.time(plot(dat, type = 'l'))
Run Code Online (Sandbox Code Playgroud)
我的MacPro视网膜上有以下时间:
> benchplot(gg_point)
step user.self sys.self elapsed
1 construct 0.000 0.000 0.000
2 build 0.321 0.078 0.398
3 render 0.271 0.088 0.359 …Run Code Online (Sandbox Code Playgroud)