gpt4 book ai didi

geom_raster() 的相对性能

转载 作者:行者123 更新时间:2023-12-04 14:17:38 25 4
gpt4 key购买 nike

我有一个 R/ggplot2似乎需要 geom_raster 的用例:在 x、y 位置具有 z 值的常规笛卡尔网格。我一直在使用geom_tile ,并且我预计切换到 geom_raster 会提高性能.不过我好像没有看到...

这是一个玩具示例(但大小合适),使用 base图形:

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

所以,一个适度的 yield ,但与我的预期相去甚远。我做错了吗?提前谢谢了!

最佳答案

您应该使用 geom_raster最新 ggplot2 (目前是 dev version),而不是 ggExtra 中的 buggy 原型(prototype)(顺便说一句,这个包现在已被弃用)。

这样做,我得到了更好的结果,4.705 vs. 1.416(过去)。相当的进步。

编辑:原来 ?geom_rasterggplot2在我的系统上已经提供了更好的基准

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

关于geom_raster() 的相对性能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8674494/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com