コロプレス図をかいてみる [統計]
「地理データを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)
真駒内あたりで人口の多いところがありますが、密度ではどうだろうかと、人口密度を表示してみました。
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)
結果です。東部の地下鉄沿線から川沿とか石山あたりの人口密度が高いようです。
ついでなので、QGIS 2.14をつかって、離散値(等間隔)で表示させてみました。
人口密度の計算は、属性テーブルを編集モードでひらいて、あたらしいフィールドをくわえます。
レイヤーのプロパティ > スタイル をひらいて、「段階に分けられた」を選択、モードを「プリティブレーク」として分類数を決めます。
コメント 0