SSブログ

コロプレス図をかいてみる [統計]

地理データをRで可視化:コロプレス図」をよんで、そういえば「R: ggplot2でGISデータを表示する」ということをやったことがあったな、こういう図は「コロプレス図」というのだな、岩波データサイエンスVol.4にもあったな、ということで、ひさしぶりにやってみたメモです。

「地理データをRで可視化:コロプレス図」では札幌市中央区のデータをつかっていましたが、札幌市の半分は南区なので(大半は山林ですが)、ここでは南区のデータを使用しました。おなじように、e-statから、平成22年国勢調査(小地域)> 001106 札幌市南区 > 男女別人口総数及び世帯総数 > 世界測地系平面直角座標系・Shape形式 をダウンロードしました。ダウンロードしたZIPファイルを展開しておきます。

人口を小地域別に表示します。ggplot2を使用して、連続値で表示しています。

library(ggplot2)
library(maptools)

data <- "h22ka01106.shp"
poly <- readShapePoly(data)
poly.df <- fortify(poly)
poly.df$Population  <- poly@data[poly.df$id, ]$JINKO
map <- ggplot(poly.df, aes(x = long, y = lat, group = group,
                           fill = Population)) +
  geom_polygon() +
  scale_fill_gradient("人口(人)",
                      low = "#FFFFEE", high = "#FF0000") +
  labs(title = "札幌市南区", x = NULL, y = NULL) +
  theme_bw(base_family="IPAexGothic") +
  theme(axis.text = element_blank(),
        axis.ticks = element_blank(),
        axis.line = element_blank())
print(map)

結果です。
Rplot01.png

真駒内あたりで人口の多いところがありますが、密度ではどうだろうかと、人口密度を表示してみました。

poly.df$Area  <- poly@data[poly.df$id, ]$AREA
poly.df$Density <- poly.df$Population / poly.df$Area * 10^6
map2 <- ggplot(poly.df, aes(x = long, y = lat, group = group,
                            fill = Density)) +
  geom_polygon() +
  scale_fill_gradient(expression(paste("人口密度(人/", km^2, ")")),
                      low = "#FFFFEE", high = "#FF0000") +
  labs(title = "札幌市南区", x = NULL, y = NULL) +
  theme_bw(base_family="IPAexGothic") +
  theme(axis.text = element_blank(),
        axis.ticks = element_blank(),
        axis.line = element_blank())
print(map2)

結果です。東部の地下鉄沿線から川沿とか石山あたりの人口密度が高いようです。
Rplot02.png

ついでなので、QGIS 2.14をつかって、離散値(等間隔)で表示させてみました。

人口.png

人口密度の計算は、属性テーブルを編集モードでひらいて、あたらしいフィールドをくわえます。
スクリーンショット 2016-11-12 11.28.38.png

レイヤーのプロパティ > スタイル をひらいて、「段階に分けられた」を選択、モードを「プリティブレーク」として分類数を決めます。
スクリーンショット 2016-11-12 17.14.59.png

このような図ができます。
人口密度.png


タグ:QGIS R
nice!(1)  コメント(0)  トラックバック(0) 
共通テーマ:日記・雑感

nice! 1

コメント 0

コメントを書く

お名前:
URL:
コメント:
画像認証:
下の画像に表示されている文字を入力してください。

Facebook コメント

トラックバック 0