高速にggplotする

ここ(Accelerating ggplot2: use a canvas to speed up plots creation)にあるように、 ベースマップを作成しておくことで高速な描画が期待できる。

library(tidyverse)
library(sf)

nc <- read_sf(system.file("shape/nc.shp", package="sf"))
nc_p <- st_sample(nc, size = 100) %>% st_sf()
base_map <- ggplot(data=nc) + geom_sf()

microbenchmark::microbenchmark(
  base_map + geom_sf(data = nc_p),
  ggplot(data=nc) + geom_sf() + geom_sf(data=nc_p)
)
Unit: milliseconds
                                                 expr      min       lq     mean   median       uq      max neval cld
                      base_map + geom_sf(data = nc_p) 2.378383 2.499209 2.937826 2.576802 2.827515 24.75987   100  a 
 ggplot(data = nc) + geom_sf() + geom_sf(data = nc_p) 4.982936 5.213071 5.761455 5.411302 6.064894 10.97817   100   b