Rで地図を描いてみよう② 色分けする

USArrestsのデータを使って、アメリカの州ごとに殺人数で色分けします。

library(maps)
library(plyr)

USArrestsの先頭列にstateという新しい列を作り、そこに小文字にした州名を入れ、crimesとして保存します。同様にstateのデータをstates_mapに保存します。その後、states_mapとcrimesを結合します。

crimes <- data.frame(state = tolower(rownames(USArrests)), USArrests)
states_map <- map_data("state")
crime_map <- merge(states_map, crimes, by.x = "region", by.y = "state")
head(crime_map)
   region      long      lat group order subregion Murder Assault UrbanPop Rape
1 alabama -87.46201 30.38968     1     1      <NA>   13.2     236       58 21.2
2 alabama -87.48493 30.37249     1     2      <NA>   13.2     236       58 21.2
3 alabama -87.52503 30.37249     1     3      <NA>   13.2     236       58 21.2
4 alabama -87.53076 30.33239     1     4      <NA>   13.2     236       58 21.2
5 alabama -87.57087 30.32665     1     5      <NA>   13.2     236       58 21.2
6 alabama -87.58806 30.32665     1     6      <NA>   13.2     236       58 21.2

crime_mapをgroupとorderで昇順に並べ替えます。

crime_map <- arrange(crime_map, group, order)

Murderは人口10万人あたりの殺人数です。それを基にアメリカの州ごとに色付けします。

ggplot(crime_map, aes(x = long, y = lat, group = group, fill = Murder)) +
  geom_polygon() + coord_map("polyconic")

f:id:dilatedtomeetyou:20200224213556j:plain
殺人数

(参考:Rグラフィックス クックブック、Winston Chang著)