ggplot
を使用するグラフの生成速度を上げる方法はありますfacet_grid
か?
facet_grid
物事が大幅に遅くなるようです。を利用する余分な機能をプロットに追加すると、さらに悪化しますfacet_grid
例:
ダミー データを作成します。
library(ggplot2)
library(rbenchmark)
df <- data.frame(cbind(rate=runif(60,0,1),period=(rep(c(1:6),10)),colour=sample(c("firebrick3","seagreen3","cadetblue"),60,replace=TRUE)
,gridvar=rep(paste0("class",1:10),each=6)))
df$rate <- as.numeric(as.character(df$rate))
df$upper <- df$rate +1
df$lower <- df$rate -1
facet_grid を使用:
benchmark(replications=10,
path={print(ggplot(df) + geom_path(aes(y=rate,x=period,group=1),size=1) + facet_grid( gridvar ~ .))},
pathError={print(ggplot(df) + geom_path(aes(y=rate,x=period,group=1),size=1) + geom_errorbar( aes(ymax =upper, ymin=lower,x=period), width=0.25) + facet_grid( gridvar ~ .))},
pathErrorPoint={print(ggplot(df) + geom_path(aes(y=rate,x=period,group=1),size=1) + geom_errorbar( aes(ymax =upper, ymin=lower,x=period), width=0.25) + geom_point(aes(y=rate,x=period,colour=colour),size=5) + facet_grid( gridvar ~ .))}
)
# test replications elapsed relative user.self sys.self user.child sys.child
#1 path 10 13.38 1.000 13.23 0.14 NA NA
#2 pathError 10 22.01 1.040 21.70 0.16 NA NA
#3 pathErrorPoint 10 38.43 2.874 37.60 0.27 NA NA
facet_grid なし:
benchmark(replications=10,
path={print(ggplot(df) + geom_path(aes(y=rate,x=period,group=1),size=1) )},
pathError={print(ggplot(df) + geom_path(aes(y=rate,x=period,group=1),size=1) + geom_errorbar( aes(ymax =upper, ymin=lower,x=period), width=0.25) )},
pathErrorPoint={print(ggplot(df) + geom_path(aes(y=rate,x=period,group=1),size=1) + geom_errorbar( aes(ymax =upper, ymin=lower,x=period), width=0.25) + geom_point(aes(y=rate,x=period,colour=colour),size=5) )}
)
# test replications elapsed relative user.self sys.self user.child sys.child
#1 path 10 2.99 1.000 2.85 0.03 NA NA
#2 pathError 10 4.62 1.545 4.56 0.06 NA NA
#3 pathErrorPoint 10 6.18 2.067 6.02 0.12 NA NA
facet_grid
プロットの制作時間は、1 秒からほぼ 4 秒になる追加機能ごとに平均 1 ~ 2 秒長くなります。なしfacet_grid
でも同様に増加が見られますが、最も多くの機能を含むプロットの生成には 1 秒もかかりません。それよりも時間がかかるのは正常ですfacet_grid
が、小さなデータセットでのこのようなプロットの 3 ~ 4 秒は、予想よりも長くなります。助言がありますか?