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, 任意のデータ)