Rで地図を塗りわける
Rで地図の色を塗り分けたいこととかありますよね。計画停電とか計画停電とか計画停電とか。
で、そんなときはmaptoolsを使うのですが、ある時に仕様が変わったらしくネットの資料はそれに対応してなかったりするわけです。
ということで自分用にメモ。
まず下記の場所で平成17年国勢調査(小地域)を選択し、欲しい地域のデータをダウンロードする。
(地図を描くためだけであれば境界データがあればよいので、適当に男女別人口総数とか選んで次へ進み境界データのみダウンロードしておく。)
http://www.e-stat.go.jp/SG2/toukeichiri/SelectDownload.do
今回は大田区のデータをダウンロードしてみた(勉強会がよくここであるので)。
zipでダウンロードされるので、解凍して.shx、.shp、.prj、.dbfの4つのファイルがあることを確認する。
あとは以下のスクリプトでもって任意のデータで色分けしたプロットができる。
今回はデータに含まれていた大田区の地域別人口データ(JINKO)で色分けを行った。
library(maptools) map <- readShapePoly("h17ka13111.shp") head(map@data) #これは確認のために行っているので実際は不要。 AREA PERIMETER H17KA13_ H17KA13_ID KEN CITY KEN_NAME SITYO_NAME GST_NAME CSS_NAME HCODE KIHON1 DUMMY1 KIHON2 KEYCODE1 KEYCODE2 AREA_MAX_F KIGO_D 0 252808.9 2467.227 5615 5052 13 111 \x93\x8c\x8b\x9e\x93s <NA> \x91\xe5\x93c\x8b\xe6 <NA> 8101 0350 - 01 111035001 111035001 M <NA> 1 226545.6 2057.483 5640 5088 13 111 \x93\x8c\x8b\x9e\x93s <NA> \x91\xe5\x93c\x8b\xe6 <NA> 8101 0350 - 02 111035002 111035002 M <NA> 2 160727.4 1608.489 5651 5101 13 111 \x93\x8c\x8b\x9e\x93s <NA> \x91\xe5\x93c\x8b\xe6 <NA> 8101 0350 - 03 111035003 111035003 M <NA> 3 205476.6 1965.830 5671 5126 13 111 \x93\x8c\x8b\x9e\x93s <NA> \x91\xe5\x93c\x8b\xe6 <NA> 8101 0310 - 02 111031002 111031002 M <NA> 4 180378.8 1997.328 5672 5127 13 111 \x93\x8c\x8b\x9e\x93s <NA> \x91\xe5\x93c\x8b\xe6 <NA> 8101 0310 - 01 111031001 111031001 M <NA> 5 154253.0 1799.677 5683 5138 13 111 \x93\x8c\x8b\x9e\x93s <NA> \x91\xe5\x93c\x8b\xe6 <NA> 8101 0310 - 03 111031003 111031003 M <NA> N_KEN N_CITY N_C1 KIGO_E KIGO_I TATE DIR HIGHT JIKAKU NMOJI MOJI SEQ_NO2 KSUM CSUM JINKO SETAI X_CODE Y_CODE KCODE1 KEY_CODE 0 <NA> <NA> 0 <NA> <NA> 0 0 50 10 6 \x96k\x90瑩\x82P\x92\x9a\x96\xda 5052 68 73 4667 2597 139.6912 35.60666 0350-01 13111035001 1 <NA> <NA> 0 <NA> <NA> 0 0 50 10 6 \x96k\x90瑩\x82Q\x92\x9a\x96\xda 5088 52 55 4182 2121 139.6963 35.60382 0350-02 13111035002 2 <NA> <NA> 0 <NA> <NA> 0 0 50 10 6 \x96k\x90瑩\x82R\x92\x9a\x96\xda 5101 36 38 3064 1725 139.6907 35.60307 0350-03 13111035003 3 <NA> <NA> 0 <NA> <NA> 0 0 50 10 6 \x93\xec\x90瑩\x82Q\x92\x9a\x96\xda 5126 33 33 1534 643 139.6932 35.59942 0310-02 13111031002 4 <NA> <NA> 0 <NA> <NA> 0 0 50 10 6 \x93\xec\x90瑩\x82P\x92\x9a\x96\xda 5127 33 36 2519 1141 139.6972 35.60021 0310-01 13111031001 5 <NA> <NA> 0 <NA> <NA> 0 0 50 10 6 \x93\xec\x90瑩\x82R\x92\x9a\x96\xda 5138 36 37 2895 1472 139.6896 35.59890 0310-03 13111031003 spplot(map, zcol="JINKO")
注意点
- 今回描画に用いているshape形式のファイルは先に確認した4つのファイルで構成されているので、4ファイルが同じ場所にある必要がある。
- 自分で色分け用のデータを追加したい場合は以下のような形でdataに追加できる。
map@data <- cbind(map@data, 任意のデータ)