国勢調査の小地域(町丁・字等別,ポリゴン)に人口を示す.応用例として,小地域を行政区域(ポリゴン)にまとめ,人口密度を示す.
パッケージ:sf
,tidyverse
シェープファイルのダウンロード
統計地理情報システム > 境界データダウンロード > 小地域 > 国勢調査 > 2015年 > 小地域(町丁・字等別)(JGD2000) > 世界測地系緯度経度・Shapefile > 22000 静岡県全域
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()
小地域を行政区域にまとめて,人口密度を可視化.
水面調査区
HCODE
)で一般調査区(町丁・字等,8101
)と水面調査区(水域で水上生活者のいる
区域,8154
)に分類.そのほか,特別調査区が存在.
%>%
)を利用し,2Shizuoka_map
の一般調査区(8101
)だけを残し(filter(HCODE==8101)
),再びオブエジェクト名をShizuoka_map
とする.現在のままだと,小地域+人口のまま.これを行政区域+人口密度に変更し,可視化.
CITY
)をクループ(group_by()
)にする.3summrize()
に渡し,括弧内を空欄にすると小地域が行政区域に単位でまとまる.
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()
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による地理空間データの可視化
統計地理情報システムには境界データのほか統計データが用意されている.国勢調査の小地域人口は統計データ(人口総数)にも含まれているが,この数値と今回使用した小地域人口(JINKO
)が一致しない場合がある.詳細は小地域データによる人口変化の可視化を参照.↩︎
パイプ演算子(パイプ)を挟むことにより,パイプの左あるデータや結果を右にある式の1つ目の引数として渡せる.左から右へ計算を次々に加えられる便利な道具として広く利用されている.x %>% f()
はf(x)
と,x %>% f(y)
はf(x, y)
と同じ結果を得る.↩︎
行政区域(CITY
)ではなく市町村(GST_NAME
)でグループにすると,政令指定都市の静岡市と浜松市を一つにまとめられる.↩︎