2011-12-29 8 views
5

Iはgeom_rasterを求めるように思わR/ggplot2ユースケースを有する:xでのZ値との定期的なデカルト格子、Yの位置を。私はgeom_tileを使用していましたが、私はgeom_rasterに切り替えることでパフォーマンスの向上が期待されました。ここでgeom_rasterの相対性能()

n <- m <- 200 
x <- 1:n 
y <- 1:m 
f <- function(x, y) 10 * sin(x/n) * cos(y/m) 
z <- outer(x, y, f) 
system.time(image(z)) 

    user system elapsed 
    0.998 0.007 1.023 

それはggplot2である:

obs <- expand.grid(x=x, y=y) 
obs$z <- as.numeric(as.list(z)) 
require(ggplot2) 
p <- ggplot(obs, aes(x=x, y=y, fill=z)) 
system.time(show(p + geom_tile())) 

    user system elapsed 
    7.328 0.891 8.187 

require(ggExtra) 
system.time(show(p + geom_raster())) 

    user system elapsed 
    7.000 0.637 7.799 
しかし、私はここで

baseグラフィックスを使用して、おもちゃの例を示します(ただし、右のサイズについて)... 1を見ているように見えません

だから、控え目な利得だが、私が期待していたもののどこにも至っていない。私はそれを間違っているのですか?事前に多くの感謝!

答えて

8

あなたは(このパッケージが廃止され、ところで)ggExtraに最新ggplot2(現在はdev version、)からgeom_raster、ないバグのプロトタイプを使用する必要があります。

このようにすると、結果は4.705対1.416(経過)です。かなりの改善。

編集:それはggplot2?geom_rasterはすでに私のシステム上で、より良いベンチマークを提供していることが判明し

benchplot(base + geom_raster()) 
     step user.self sys.self elapsed 
1 construct  0.006 0.004 0.010 
2  build  0.887 0.212 1.109 
3 render  0.449 0.119 0.584 
4  draw  0.108 0.005 0.141 
5  TOTAL  1.450 0.340 1.844 
> benchplot(base + geom_tile()) 
     step user.self sys.self elapsed 
1 construct  0.016 0.005 0.026 
2  build  1.031 0.329 1.365 
3 render  1.021 0.297 1.318 
4  draw  0.987 0.041 1.040 
5  TOTAL  3.055 0.672 3.749 
関連する問題