I draw some hemisphere fields with ggplot2, and when I try to project them into a stereographic projection, it takes age to render. This is a minimal example:
lat <- seq(-87.159, -2, by = 3.7) lon <- seq(0, 360, by = 3.75) month <- 1:12 gdata <- expand.grid(lat = lat, lon = lon, month = month) gdata$z <- rnorm(nrow(gdata)) g <- ggplot(gdata, aes(lon, lat)) + geom_tile(aes(fill = z)) + facet_wrap(~month, ncol = 4) benchplot(g)
I get:
step user.self sys.self elapsed 1 construct 0.000 0.000 0.000 2 build 0.156 0.004 0.162 3 render 0.976 0.016 0.990 4 draw 0.464 0.000 0.464 5 TOTAL 1.596 0.020 1.616
If you add a projection with coord_map()
benchplot(g + coord_map("stereographic", orientation = c(-90,0, -120)))
~ 130 times longer is required.
step user.self sys.self elapsed 1 construct 0.008 0.000 0.004 2 build 39.520 0.184 40.612 3 render 147.744 0.060 147.968 4 draw 17.884 0.004 17.902 5 TOTAL 205.156 0.248 206.486
Is there any way to speed this up? I feel that the rendering time is 100 times longer.
source share