人口集中地区データによる郊外化の可視化では1975年と2015年の人口集中地区(ポリゴン)の地図を重ねて,地方都市の郊外化を可視化.
ここでは,10年ごと(1975年,85年,95年,2005年,15年)の地図を並べて,人口集中地区の拡大の様子を可視化.その際に,アニメーション効果を取り入れてみる.
ライブラリ:sf,tidyverse,gganimate
下記,アニメ化の際にエラー(The transformr package is required
).これに対応するため,transformrをインストールし,ライブラリ呼出.
MetBrewerに納められているHokusai2のカラーパレット利用.行政区域のダウンロード
read_sf:データ読込.Toyama_mapと名付ける.Toyama_mapから富山市(行政区域コードN03_007の16201)を切り抜き,新しいデータをToyama_shi_mapとする.Toyama_map <-
read_sf("N03-20210101_16_GML/N03-20210101_16_GML/N03-21_16_210101.shp")
#富山市の選抜
Toyama_map %>%
filter(N03_007=="16201") ->
Toyama_shi_map人口集中地区
read_sf:データ読込.Toyama_DID#(#は西暦の下2桁)と名付ける.crs="WGS84"はcrs(Coordinate
ReferenceSystem,座標参照系)を1984年に定められた世界測地系(World
Geodetic System)に投影を意味.Toyama_DID#から富山市(行政区域コードA16_002の16201)を切り抜き,新しいデータをToyama_shi_DID#とする.
16361)も含めて富山市の人口集中地区データを作成.A16_011列が時間型(TM_Instant)に表現.過去に揃えるため2015に変換.#1975年(昭和50年)
Toyama_DID75 <-
read_sf("A16-75_16_GML/A16-75_16_DID.shp",
crs="WGS84")
#富山市
Toyama_DID75 %>%
filter(A16_002=="16201" | A16_002=="16361") ->
Toyama_shi_DID75
#1985年(昭和60年)
Toyama_DID85 <-
read_sf("A16-85_16_GML/A16-85_16_DID.shp",
crs="WGS84")
#富山市
Toyama_DID85 %>%
filter(A16_002=="16201" | A16_002=="16361") ->
Toyama_shi_DID85
#1995年(平成7年)
Toyama_DID95 <-
read_sf("A16-95_16_GML/A16-95_16_DID.shp",
crs="WGS84")
#富山市
Toyama_DID95 %>%
filter(A16_002=="16201") ->
Toyama_shi_DID95
#2005年(平成17年)
Toyama_DID05 <-
read_sf("A16-05_16_GML/A16-05_16_DID.shp",
crs="WGS84")
#富山市
Toyama_DID05 %>%
filter(A16_002=="16201") ->
Toyama_shi_DID05
#2015年(平成27年)
Toyama_DID15 <-
read_sf("A16-15_16_GML/A16-15_16_GML/A16-15_16_DID.shp",
crs="WGS84")
#富山市
Toyama_DID15 %>%
filter(A16_002=="16201") ->
Toyama_shi_DID15
#調査年に修正
Toyama_shi_DID15 %>%
mutate(A16_011=2015)->
Toyama_shi_DID15鉄道
国土数値情報ダウンロードサービス > 鉄道(ライン) > 全国 > 世界測地系 > 令和2年
railway20と名付ける.facet_wrap()).
facet_wrap()を利用するため,データ(ここではシェープファイル)を縦方向に合併(rbind)すし,DIDと名付ける.各データの列数が揃っていることに注意.A16_011列に調査年(国勢調査が実施された年度)が示されている.これをyearとし,整数型(as.integer())にする.facet_wrap(year)を指示することでyearごとの地図を並列.scale_fill_met_d():ggplot2でMetBrewerのカラーパレットを利用する関数.fillは地物の内部の色付け.dは離散スケール.連続スケールにはcをdに変更.
scale_color_met_d():colorは地物の枠の色付け. #データ結合
DID <-
rbind(Toyama_shi_DID75, Toyama_shi_DID85,
Toyama_shi_DID95, Toyama_shi_DID05,
Toyama_shi_DID15)
#列名A16_011(調査年)をyearと名付ける
DID %>%
mutate(year=A16_011) ->
DID
#可視化
ggplot()+
geom_sf(data=Toyama_map)+
geom_sf(data=Toyama_shi_map, linewidth=0.8,
fill="white")+
geom_sf(data=DID, aes(fill=year,
color=year))+
scale_fill_met_d("Hokusai2")+
scale_color_met_d("Hokusai2")+
geom_sf(data=railway20, linewidth=0.2, linetype=2)+
coord_sf(datum=NA,
xlim= c(136.96, 137.4), ylim=c(36.5, 36.78))+
labs(title="富山市人口集中地区の変遷",
caption="出典:国土交通省国土数値情報")+
facet_wrap(~year)+
theme_bw()+
theme(legend.position="none")年ごとに作成された地図(フレーム)を,アニメーション効果を用いて,可視化.
facet_wrap(~year)を削除.こうすることで,1975年の人口集中地区が一番下に配置され,順番に地図(フレーム=コマ)が重なる.subtitle)を作成.{current_frame}は現在の地図(フレーム)の西暦が示される.
gとする.g <-
ggplot()+
geom_sf(data=Toyama_map)+
geom_sf(data=Toyama_shi_map, linewidth=0.8, fill="white")+
geom_sf(data=DID, aes(fill=year,
color=year))+
scale_fill_met_d("Hokusai2")+
scale_color_met_d("Hokusai2")+
geom_sf(data=railway20, linewidth=0.2, linetype=2)+
coord_sf(datum=NA,
xlim= c(136.96, 137.4), ylim=c(36.5, 36.78))+
labs(title="富山市人口集中地区の変遷",
subtitle="年:{current_frame}",
caption="出典:国土交通省国土数値情報")+
theme_bw()+
theme(legend.position="none")transition_manual(year):年ごとに作成された地図(フレーム)を連続して変化させるように指示.animeと名付ける.animate():作成したanimeをアニメ化.↑で利用した人口集中地区のシェープファイルには人口集中地区の人口(人)や面積(㎢)が示されている.この数値から人口密度(人/㎢)が計算できる.
distinct()),新しいデータフレーム(DID2と名付ける)を作成.#重複するDIDid(地域コード)削除
#1975年
Toyama_shi_DID75 %>%
distinct(A16_001,.keep_all=TRUE)->
Toyama_shi_DID75
#1985年
Toyama_shi_DID85 %>%
distinct(A16_001,.keep_all=TRUE)->
Toyama_shi_DID85
#1995年
Toyama_shi_DID95 %>%
distinct(A16_001,.keep_all=TRUE)->
Toyama_shi_DID95
#2005年
Toyama_shi_DID05 %>%
distinct(A16_001,.keep_all=TRUE)->
Toyama_shi_DID05
#2015年
Toyama_shi_DID15 %>%
distinct(A16_001,.keep_all=TRUE)->
Toyama_shi_DID15
#データ結合
DID2 <-
rbind(Toyama_shi_DID75, Toyama_shi_DID85,
Toyama_shi_DID95, Toyama_shi_DID05,
Toyama_shi_DID15)A16_011(調査年)をyearと名付ける.A16_005(人口,単位人)をpopと名付け,整数型に.A16_006(面積,単位㎢)をareaと名付け,(小数で表現されるため)実数型に.
pop_denと名付ける.pop_denが格納されたファイルをdensityとする.#yearの作成,整数型
DID2 %>%
mutate(year=A16_011,
pop=as.integer(A16_005),
area=as.numeric(A16_006)) ->
DID2
DID2 %>%
group_by(year) %>%
summarise(pop=sum(pop),
area=sum(area)) %>%
mutate(pop_den=pop/area) ->
density
#densityの中身
density| year | pop | area | geometry | pop_den |
|---|---|---|---|---|
| 1975 | 166572 | 32.00 | MULTIPOLYGON (((137.2023 36… | 5205.375 |
| 1985 | 197258 | 43.40 | MULTIPOLYGON (((137.1852 36… | 4545.115 |
| 1995 | 216764 | 51.30 | MULTIPOLYGON (((137.303 36…. | 4225.419 |
| 2005 | 218679 | 54.27 | MULTIPOLYGON (((137.1645 36… | 4029.464 |
| 2015 | 235868 | 57.89 | MULTIPOLYGON (((137.3036 36… | 4074.417 |
折れ線グラフの完成図
group=1:すべてのデータポイント(1975年,85年,95年,2005年,15年の値)を同じグループとして扱うことを意味.これにより,データポイントが同じ線で結ばれる.#人口密度時系列図
ggplot()+
geom_line(data=density,
aes(x=year, y=pop_den, group=1),
color="#1e4294", linewidth=1.5)+
geom_point(data=density, aes(x=year, y=pop_den),
color="#1e4294", fill="#1e4294", size=3)+
labs(x="年", y="人口密度(人/㎢)",
caption="出典:国土交通省国土数値情報")+
ggtitle("富山市人口集中地区の人口密度の変化")+
theme_bw()Rによる地理空間データの可視化