1 目的

国勢調査の小地域(町丁・字等別,ポリゴン)に人口を示す.応用例として,小地域を行政区域(ポリゴン)にまとめ,人口密度を示す.

パッケージ:sftidyverse

library(sf)
library(tidyverse)

2 小地域の人口の可視化

シェープファイルのダウンロード

  • 統計地理情報システム > 境界データダウンロード > 小地域 > 国勢調査 > 2015年 > 小地域(町丁・字等別)(JGD2000) > 世界測地系緯度経度・Shapefile > 22000 静岡県全域

    • ダウンロードしたZIPファイルは同じフォルダ(ディレクトリ)に納め,ZIPファイルを選択 > 右クリック > すべて展開 > 展開先の選択とファイルの選択 > 展開を実行する.展開後は最初にダウンロードしたZIPファイルを削除.
    • read_sf:データ読込.オブジェクトをShizuoka_mapとする.

小地域の可視化

Shizuoka_map <- 
  read_sf("A002005212015DDSWC22/h27ka22.shp") 

#小地域の可視化
ggplot()+
  geom_sf(data=Shizuoka_map, fill="white") 

参考

小地域のポリゴンは行政区域のポリゴンに比べて小さい.また,海上にもポリゴン(水面調査区)が存在する(静岡県は目立たないが,例えば神奈川県や富山県は目立つ).このことを確認するために,国土数値情報ダウンロードサービスから得られる静岡県の行政区域(ポリゴン)と比較する.なお,行政区域ので囲まれている部分は静岡市,は浜松市.

小地域の人口の可視化

今回ダウンロードしたデータ(Shizuoka_map)には,小地域の人口(人,JINKO),面積(㎡,AREA)の情報も含まれる.1その他に,世帯数(SETAI)の情報も含まれる.

  • aes():示したい変数(数値データ)を指定.ここではJINKOを指定.色付けは枠内(fill
    • 枠線(color)は白に指定.
  • theme_void():空のテーマ.その他のテーマはComplete themesを参照.
ggplot()+
  geom_sf(data=Shizuoka_map, 
          aes(fill=JINKO), color="white")+
  scale_fill_viridis_c(option="G", direction=-1)+
  labs(fill="人",
       caption="出典:国土交通省国土数値情報")+
  ggtitle("小地域人口(2015年)")+
  theme_void()

3 応用例

3.1 行政区域の人口密度の可視化

小地域を行政区域にまとめて,人口密度を可視化.

水面調査区

  • 国勢調査の調査区:分類コード(HCODE)で一般調査区(町丁・字等,8101)と水面調査区(水域で水上生活者のいる 区域,8154)に分類.そのほか,特別調査区が存在.
    • ここでは,パイプ演算子(%>%)を利用し,2Shizuoka_mapの一般調査区(8101)だけを残し(filter(HCODE==8101)),再びオブエジェクト名をShizuoka_mapとする.
#一般調査区の抽出
Shizuoka_map %>% 
  filter(HCODE==8101) ->
  Shizuoka_map

現在のままだと,小地域+人口のまま.これを行政区域+人口密度に変更し,可視化.

  • 行政区域(CITY)をクループ(group_by())にする.3
  • 次にsummrize()に渡し,括弧内を空欄にすると小地域が行政区域に単位でまとまる.
    • ただし,行政区域の人口密度を求めるため,summrize()の括弧内を空欄にせず,計算式を示す.
    • 小地域の人口を足し上げ(sum(JINKO)),行政区域の人口に変更し,小地域の面積を足し上げ(sum=(AREA)),行政区域の面積にする.行政区域の総人口をPopulation,行政区域の総面積をAreatotalとする.
    • 行政区域を人口密度(Density)で示す.人/㎡はあまり使われないため,人/㎢に変更,Areatotalを100万(1000000)で割る(=人/㎡に100万を掛ける).
    • オブジェクト名をShizuoka_map2に変更する.
Shizuoka_map %>%
  group_by(CITY) %>%
  summarise(Population=sum(JINKO),
            Areatotal=sum(AREA),
            Density=Population/Areatotal*1000000) ->
  Shizuoka_map2

#可視化
ggplot()+
  geom_sf(data=Shizuoka_map2, 
          aes(fill=Density))+
  scale_fill_viridis_c(option="G", direction=-1)+
  labs(fill="人/㎢",
       caption="出典:国土交通省国土数値情報")+
  ggtitle("行政区域人口密度(2015年)")+
  theme_void()

3.2 サブセットの人口密度の可視化

  • オブジェクトShizuoka_mapからsubset()を用いて一部の小地域だけを抜き出す.

静岡市

  • GST_NAME列を用いて静岡市を抽出.  
ggplot()+
  geom_sf(data=subset(Shizuoka_map,
                      GST_NAME=="静岡市"), 
          aes(fill=JINKO), color="white")+
  scale_fill_viridis_c(option="G", direction=-1)+
  labs(fill="人",
       caption="出典:国土交通省国土数値情報")+
  ggtitle("静岡市小地域人口(2015年)")+
  theme_void()

富士地域

ここでは,富士宮市と富士市を富士地域とする.

  • CITY列を用いて207(富士宮市)と210(富士市)を抽出.
    • またはGST_NAME列を用いて富士宮市富士市を抽出.
  • 富士宮市と富士市の境界を示すため,行政区域単位でまとめたShizuoka_map2を利用.
    • CITY列を用いることで207(富士宮市)と210(富士市)を抽出可能.
ggplot()+
  geom_sf(data=subset(Shizuoka_map,
                       CITY=="207" | CITY=="210"), 
          aes(fill=JINKO), color="white")+
  scale_fill_viridis_c(option="G", direction=-1)+
  geom_sf(data=subset(Shizuoka_map2,
                      CITY=="207" | CITY=="210"),
          fill="NA", linewidth=0.6)+
  labs(fill="人",
       caption="出典:国土交通省国土数値情報")+
  ggtitle("富士地域小地域人口(2015年)")+
  theme_void()

  • facet_wrap()で抽出した二都市を並べてみる.
ggplot()+
  geom_sf(data=subset(Shizuoka_map,
                      GST_NAME=="富士宮市" |
                        GST_NAME=="富士市"), 
          aes(fill=JINKO), color="white")+
  scale_fill_viridis_c(option="G", direction=-1)+
  facet_wrap(~GST_NAME, ncol=2)+
  labs(fill="人",
       caption="出典:国土交通省国土数値情報")+
  coord_sf(datum=NA)+
  ggtitle("富士地域小地域人口(2015年)")+
  theme_bw()

Rによる地理空間データの可視化


  1. 統計地理情報システムには境界データのほか統計データが用意されている.国勢調査の小地域人口は統計データ(人口総数)にも含まれているが,この数値と今回使用した小地域人口(JINKO)が一致しない場合がある.詳細は小地域データによる人口変化の可視化を参照.↩︎

  2. パイプ演算子(パイプ)を挟むことにより,パイプの左あるデータや結果を右にある式の1つ目の引数として渡せる.左から右へ計算を次々に加えられる便利な道具として広く利用されている.x %>% f()f(x)と,x %>% f(y)f(x, y)と同じ結果を得る.↩︎

  3. 行政区域(CITY)ではなく市町村(GST_NAME)でグループにすると,政令指定都市の静岡市と浜松市を一つにまとめられる.↩︎