Geographical Maps in ggplot2: Rectangle World Map

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

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!