Maarten Lambrechts posted a tutorial where he demonstrates the steps through which he created a Eurovision Song Festival map in R.


Inspired by his tutorial, I decided to create a worldmap of my own, the R code for which you may find below.
options(stringsAsFactors = F) # options
library(tidyverse) # packages
# retrieve data file
link = "https://gist.githubusercontent.com/maartenzam/787498bbc07ae06b637447dbd430ea0a/raw/9a9dafafb44d8990f85243a9c7ca349acd3a0d07/worldtilegrid.csv"
geodata <- read.csv(link) %>% as.tibble() # load in geodata
str(geodata) # examine geodata
## Classes 'tbl_df', 'tbl' and 'data.frame': 192 obs. of 11 variables:
## $ name : chr "Afghanistan" "Albania" "Algeria" "Angola" ...
## $ alpha.2 : chr "AF" "AL" "DZ" "AO" ...
## $ alpha.3 : chr "AFG" "ALB" "DZA" "AGO" ...
## $ country.code : int 4 8 12 24 10 28 32 51 36 40 ...
## $ iso_3166.2 : chr "ISO 3166-2:AF" "ISO 3166-2:AL" "ISO 3166-2:DZ" "ISO 3166-2:AO" ...
## $ region : chr "Asia" "Europe" "Africa" "Africa" ...
## $ sub.region : chr "Southern Asia" "Southern Europe" "Northern Africa" "Middle Africa" ...
## $ region.code : int 142 150 2 2 NA 19 19 142 9 150 ...
## $ sub.region.code: int 34 39 15 17 NA 29 5 145 53 155 ...
## $ x : int 22 15 13 13 15 7 6 20 24 15 ...
## $ y : int 8 9 11 17 23 4 14 6 19 6 ...
# create worldmap
worldmap <- ggplot(geodata)
# add rectangle grid + labels
worldmap +
geom_rect(aes(xmin = x, ymin = y,
xmax = x + 1, ymax = y + 1)) +
geom_text(aes(x = x, y = y,
label = alpha.3))
# improve geoms
worldmap +
geom_rect(aes(xmin = x, ymin = y,
xmax = x + 1, ymax = y + 1,
fill = region)) +
geom_text(aes(x = x, y = y,
label = alpha.3),
size = 2,
nudge_x = 0.5, nudge_y = -0.5,
vjust = 0.5, hjust = 0.5) +
scale_y_reverse()
# finalize plot look
colors = c('yellow', 'red', 'white', 'pink', 'green', 'orange')
worldmap +
geom_rect(aes(xmin = x, ymin = y,
xmax = x + 1, ymax = y + 1,
fill = region)) +
geom_text(aes(x = x, y = y,
label = alpha.3),
size = 3,
nudge_x = 0.5, nudge_y = -0.5,
vjust = 0.5, hjust = 0.5) +
scale_y_reverse() +
scale_fill_manual(values = colors) +
guides(fill = guide_legend(ncol = 2), col = F) +
theme(plot.background = element_rect(fill = "blue"),
panel.grid = element_blank(),
panel.background = element_blank(),
legend.background = element_blank(),
legend.position = c(0, 0),
legend.justification = c(0, 0),
legend.title = element_text(colour = "white"),
legend.text = element_text(colour = "white"),
legend.key = element_blank(),
legend.key.size = unit(0.06, "npc"),
axis.text = element_blank(),
axis.title = element_blank(),
axis.ticks = element_blank(),
text = element_text(colour = "white", size = 16)
) +
labs(title = "ggplot2: Worldmap",
fill = "Region",
caption = "paulvanderlaken.com")
What would you add to your worldmap? If you end up making one, please send me a copy on paulvanderlaken@gmail.com!