【R】Tile Grid Map
2020年11月18日
ggplot2
を使うと、地図を含めて様々な図を表現できますが、今回はタイルマップを表示してみます。
ちょうど「Tutorial: a World Tile Grid Map in ggplot2」というのがあったので、これにて勉強させてもらいました。また、同ページでリンクのあった「The World Tile Grid Map」も参考にしました。
データは、世界地図をすでに編集してCSVファイルにしてくれているものを使わせてもらいました。
まずは、データを読み込んで、眺めてみます。
library(ggplot2) worldtilegrid <- read.csv("worldtilegrid.csv") head(worldtilegrid)
> head(worldtilegrid)
name alpha.2 alpha.3 country.code iso_3166.2 region sub.region region.code sub.region.code x y
1 Afghanistan AF AFG 4 ISO 3166-2:AF Asia Southern Asia 142 34 22 8
2 Albania AL ALB 8 ISO 3166-2:AL Europe Southern Europe 150 39 15 9
3 Algeria DZ DZA 12 ISO 3166-2:DZ Africa Northern Africa 2 15 13 11
4 Angola AO AGO 24 ISO 3166-2:AO Africa Middle Africa 2 17 13 17
5 Antarctica AQ ATA 10 ISO 3166-2:AQ Antarctica <NA> NA NA 15 23
6 Antigua & Barbuda AG ATG 28 ISO 3166-2:AG Americas Caribbean 19 29 7 4
ここでは、国の位置としてx, yを、国名をalpha.3を、地域としてregionを使います。
まずは、簡単にそれらしい地図を描いてみます。
ggplot(worldtilegrid, aes(x = x, y = y)) + geom_text(aes(label = alpha.3), size=3)
今度は、国名ではなくタイルで表示します。
mytheme <- theme_minimal() + theme(panel.grid = element_blank(), axis.text = element_blank(), axis.title = element_blank()) worldgrid + geom_rect(color = "#ffffff") + mytheme
なんとなく気づきますが、南北逆です。。。
南北を正しくして、タイルに国名を入れます。
worldgrid + geom_rect(color = "#ffffff") + mytheme + geom_text(aes(x = x, y = y, label = alpha.3), color = "#ffffff", alpha = 0.5, nudge_x = 0.5, nudge_y = -0.5, size = 2.5) + scale_y_reverse()
最後に、地域ごとにタイルを色分けして、色の微調整等を行い、完成!
colors <- c("#c5221e","#4274e0","#f8ba03","#34a853","#950461","#72910a") worldgrid <- ggplot(worldtilegrid, aes(xmin = x, ymin = y, xmax = x + 1, ymax = y + 1, fill = region)) worldgrid + geom_rect(color = "#888888") + mytheme + geom_text(aes(x = x, y = y, label = alpha.3), color = "#ffffff", alpha = 0.8, nudge_x = 0.5, nudge_y = -0.5, size = 2.5) + scale_y_reverse() + scale_fill_manual(values = colors) + theme(legend.position = "right") + coord_equal()
こういう世界地図も面白いですね。