ラスター パッケージの getData 関数を使用して、アルゼンチンの地図を取得しています。ggplot2 を使用して結果のマップをプロットしたいので、broom パッケージの tidy 関数を使用してデータフレームに変換しています。これは問題なく動作しますが、連邦区の名前を保存して地図上で使用できるようにする方法がわかりません。
地区名を保持しない元のコードは次のとおりです。
# Original code: ##################################
# get the map data from GADM.org and then simplify it
arg_map_1 <- raster::getData(country = "ARG", level = 1, path = "./data/") %>%
# simplify
rmapshaper::ms_simplify(keep = 0.01) %>%
# tidy to a dataframe
broom::tidy()
# plot the map
library(ggplot2)
ggplot(data=arg_map_1) +
geom_map(map=arg_map_1, aes(x=long, y=lat, map_id=id, fill=id),
color="#000000", size=0.25)
そして、SPDF から地区名を取り出してマップ ID として使用するためのハックを含むコードを次に示します。
# Code with a hack to keep the district names: ################################
# get the map data from GADM.org and then simplify it
arg_map_1 <- raster::getData(country = "ARG", level = 1, path = "./data/") %>%
# simplify
rmapshaper::ms_simplify(keep = 0.01)
for(region_looper in seq_along(arg_map_1@data$NAME_1)){
arg_map_1@polygons[[region_looper]]@ID <-
as.character(arg_map_1@data$NAME_1[region_looper])
}
# tidy to a dataframe
arg_map_1 <- arg_map_1 %>%
broom::tidy()
library(ggplot2)
ggplot(data=arg_map_1) +
geom_map(map=arg_map_1, aes(x=long, y=lat, map_id=id, fill=id),
color="#000000", size=0.25)
名前を保持するtidy関数を使用する方法があるに違いないと考え続けていますが、私の人生では、それを理解することはできません.