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")
(参考:Rグラフィックス クックブック、Winston Chang著)