人口集中地区データによる郊外化の可視化では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による地理空間データの可視化