Last active
November 1, 2021 17:33
-
-
Save ikashnitsky/b9c5d0b838daa2338066dbaa3e035dcc to your computer and use it in GitHub Desktop.
Code to reproduce the result of my post -- https://ikashnitsky.github.io/2017/ggplot2-microbenchmark/
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
################################################################################ | |
# | |
# ikashnitsky.github.io 2017-07-15 | |
# The speed of ggplot2 using canvas | |
# Ilya Kashnitsky, [email protected] | |
# | |
################################################################################ | |
# load required packages | |
library(tidyverse) # data manipulation and viz | |
library(ggthemes) # themes for ggplot2 | |
library(viridis) # the best color palette | |
library(rgdal) # deal with shapefiles | |
library(microbenchmark) # measure the speed of executing | |
library(extrafont) # nice font | |
myfont <- "Roboto Condensed" | |
library(RColorBrewer) | |
################################################################################ | |
# simple plot | |
canv_mt <- ggplot(mtcars, aes(hp, mpg, color = cyl))+ | |
coord_cartesian() | |
# test speed with mocrobenchmark | |
test <- microbenchmark( | |
without_canvas = ggplot(mtcars, aes(hp, mpg, color = cyl))+ | |
coord_cartesian()+ | |
geom_point() | |
, | |
with_canvas = canv_mt+ | |
geom_point() | |
, | |
times = 100 | |
) | |
test | |
autoplot(test)+ | |
aes(fill = expr)+ | |
scale_fill_viridis(discrete = T)+ | |
theme_bw(base_size = 15, base_family = myfont)+ | |
theme(legend.position = "none", | |
axis.text = element_text(size = 15))+ | |
labs(title = "The speed of creating a simple ggplot") | |
################################################################################ | |
# map | |
# load the already prepared data | |
load(url("https://ikashnitsky.github.io/doc/misc/map-subplots/df-27-261-urb-rur.RData")) | |
load(url("https://ikashnitsky.github.io/doc/misc/map-subplots/spatial-27-261.RData")) | |
# fortify spatial objects | |
neib <- fortify(Sneighbors) | |
bord <- fortify(Sborders) | |
fort <- fortify(Sn2, region = "id") | |
# join spatial and statistical data | |
fort_map <- left_join(df, fort, "id") | |
# pal for the subregions | |
brbg3 <- brewer.pal(11,"BrBG")[c(8,2,11)] | |
# create a blank map | |
basemap <- ggplot()+ | |
geom_polygon(data = neib, | |
aes(x = long, y = lat, group = group), | |
fill = "grey90",color = "grey90")+ | |
coord_equal(ylim = c(1350000,5450000), | |
xlim = c(2500000, 6600000), | |
expand = c(0,0))+ | |
theme_map(base_family = myfont)+ | |
theme(panel.border = element_rect(color = "black",size = .5,fill = NA), | |
legend.position = c(1, 1), | |
legend.justification = c(1, 1), | |
legend.background = element_rect(colour = NA, fill = NA), | |
legend.title = element_text(size = 15), | |
legend.text = element_text(size = 15))+ | |
labs(x = NULL, y = NULL) | |
# test speed with mocrobenchmark | |
test_map <- microbenchmark( | |
without_canvas = | |
ggplot()+ | |
geom_polygon(data = neib, | |
aes(x = long, y = lat, group = group), | |
fill = "grey90",color = "grey90")+ | |
coord_equal(ylim = c(1350000,5450000), | |
xlim = c(2500000, 6600000), | |
expand = c(0,0))+ | |
theme_map(base_family = myfont)+ | |
theme(panel.border = element_rect(color = "black", | |
size = .5,fill = NA), | |
legend.position = c(1, 1), | |
legend.justification = c(1, 1), | |
legend.background = element_rect(colour = NA, fill = NA), | |
legend.title = element_text(size = 15), | |
legend.text = element_text(size = 15))+ | |
labs(x = NULL, y = NULL) + | |
geom_polygon(data = fort_map, | |
aes(x = long, y = lat, group = group, | |
fill = subregion), color = NA)+ | |
scale_fill_manual(values = rev(brbg3)) + | |
theme(legend.position = "none") | |
, | |
with_canvas = | |
basemap + | |
geom_polygon(data = fort_map, | |
aes(x = long, y = lat, group = group, | |
fill = subregion), color = NA)+ | |
scale_fill_manual(values = rev(brbg3)) + | |
theme(legend.position = "none") | |
, | |
times = 100 | |
) | |
autoplot(test_map)+ | |
aes(fill = expr)+ | |
scale_fill_viridis(discrete = T)+ | |
theme_bw(base_size = 15, base_family = myfont)+ | |
theme(legend.position = "none", | |
axis.text = element_text(size = 15))+ | |
labs(title = "The speed of creating a map with ggplot2") |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment