2016年3月30日水曜日

Rを使って福岡市の人口密度ランキング(町丁目単位)

福岡県の市単位(政令指定都市は区単位)の人口密度単位のランキングは、↓こちらにあって、

福岡県の人口密度番付 - 都道府県・市区町村ランキング【日本・地域番付】

  1位 福岡市 中央区(11770人/㎢)
  2位 福岡市 城南区( 8031人/㎢)
  3位 福岡市 南区 ( 7976人/㎢)

となっております。トップは予想通りの福岡市中央区。

ただ、中央区と言ってもそれなりに広いし、人口密度にはムラがあるでしょうし、もしかしたら他の区にもギュギュっと人の密集しているエリアがあるかもしれません。

ということで、Rを使って町丁目単位(博多駅前1丁目とか、天神2丁目とか)でのランキングを出してみました。

とりあえず結果をどうぞ↓



中央区全体の人口密度は 11770人/㎢ でしたが、中央区荒戸2丁目で人口密度を計算すると 49294人/㎢ と、4倍以上の数字を叩き出しました。

また、上位5位の荒戸、平尾、薬院、高砂はいずれも中央区の町名ですが、6位に入っている愛宕浜は西区にある町です。

西区と言えば福岡市の中では辺境ですし(注:著者の個人的なイメージです)、前述の市区単位のランキングでは17位とかなり下位にランキングされてました、

実は、この愛宕浜2丁目は室見川をはさんで早良区のすぐ対岸にあって、比較的都市部に近い場所なんですよね。そして、ほとんどマンションしかありません(他には中学校とマルキョウがある)。大抵のマンションは10階以上あるので、おのずと人口密度が高くなるわけですね。

↓Google Earthで見てみるとこんな感じ



では、最後にRスクリプトを載せておきます。

シェープファイルは↓こちらに書いてある方法で入手して、

e-Stat(統計局)で公開されているShapeファイルを、Rで表示する - Rプログラミングの小ネタ

↓このやり方でマージしました。

Rで複数のシェープファイルを結合する - Rプログラミングの小ネタ


library(maptools)
library(ggplot2)
 
# シェープファイルを読み込む
pj <- CRS("+proj=longlat +datum=WGS84")
shp <-readShapePoly("merge.shp", proj4string=pj)
 
# 必要な項目を取り出しデータフレームにする
df <- data.frame(町丁名=shp$MOJI, 面積=shp$AREA, 人口=shp$JINKO)
 
# 人口密度の列を追加
df$人口密度 <- df$人口 / (df$面積 / 1000^2) # 1平方キロあたり
 
# ソートして、上位50だけ取り出す
df_sort <- df[order(df$人口密度, decreasing=T), ]
top50 <- df_sort[1:50, ]
 
# 画像ファイルに出力
png("人口密度ランキング.png", width=640, height=1280)
ggplot(top50, aes(x=reorder(町丁名, 人口密度), y=人口密度)) +
  geom_bar(stat="identity") +
  ggtitle("福岡市の人口密度TOP50") +
  ylab("人口密度 (人/㎢)") +
  theme( plot.title=element_text(size=20),
         axis.title.x=element_blank(),
         axis.title.y=element_blank(),
         axis.text.x=element_text(size=20),
         axis.text.y=element_text(size=20)  ) +
  geom_text(aes(label=paste(round(人口密度), "人/㎢"), y=人口密度-5000),
            size=5, colour="white") +
  coord_flip()
dev.off()