フリー統計ソフトRで地図と統計情報を重ねて書く
統計ソフトRは無料で使える統計ソフトですが、その他様々な作図に使用できます。
地図データは、SHPという形式のファイルで記述されている事が多いのですが(政府のサイトでもこの形式でダウンロードすることが多いです)、このファイルはGIS編集用のソフトで開いたり編集したりします。
しかし、Rでも読み込んである程度図示が可能です。今回は、次のような図を作る命令文について簡単に説明を行いたいと思います。
まず、地図データの説明から行っておきます。これは、2018年度の各市区町村の待機児童の数と発生率をプロットしたものです。当たり前ですが、東京や埼玉県南部(東京のベッドタウンになっているところ)では、率が待機児童の数が大きくなっています。
色は、申込件数に対する待機児童の数の率を表しています。緑は低く、赤に行くほど率が高くなります。
丸が大きく赤色に近い市区町村は、待機児童の数も申込件数に対する割合も高いため、問題が深刻であることになります。
この地図は、本来全国データでとっていますが、全国値を地図に表示すると関東近県の集中がわかりずらくなってしまいますので、ここではあえて、アップをしてその部分のみが表示されるようになっています。後で説明しますが、x軸とy軸を設定しなければ全体が表示されます。
まず、必要なパッケージと使用するデータを読み込んでおきましょう。
#編集や読み込みを行うための関数です
library(sf)
library(tidyverse)
#dbmapはデータベースを統合するための市区町村別、
#c_mapは都道府県用のキャンパスとなるマップデータです。
#dbはcsv形式でとった市区町村別のデータです。
db_map <- read_sf("municipalities.shp")
c_map <- read_sf("prefectures.shp")
db <- read_csv("db.csv")
次に、点データで表示する市区町村別の位置データ(c_map)と、個別のデータである(db)とを統合しましょう。事前に、アドミンコードなど共通する個別idを両者にふっておく必要があります。ここでは、adm_codeとadminで統合しています。
db_2 <- left_join(db_map, db, by=c('adm_code'='admin'))
いよいよ、地図を描画していきましょう。
g01 <- ggplot()+
geom_sf(data = c_map,fill = "white",alpha=.4)+
geom_point(data = db_2,aes(x=lon,y=lat,size = SpecificNeed_Num + Waiting_Num + NoJobS_Num, colour = B_Rate),alpha=.7)+
ylim(32.5,37.5)+
xlim(137.5,142.5)+
scale_colour_gradient(low="green",high="red")+
scale_size_area(max_size=6)+
labs(size="広義の待機児童数", colour="保育所申込件数分の\n広義の待機児童数")+
annotate("text",x = 140,y=33,label="注:「広義の待機児童」;特定の保育園等のみ希望している者、求職活動を休止している者 、待機児童の合計\n
出所:厚生労働省(2020)『保育所等関連状況取りまとめ(平成31年4月1日)』よりYoshihiro Kensuke作成。" ,family = "HiraKakuPro-W3",size=2)+
theme_void(base_family = "HiraKakuPro-W3")
plot(g01)
これで、例示の地図が描画されます。geom_sfでキャンバス用の白地図を、geom_pointで緯度経度情報を持つデータベースを、それぞれ別個のデータを指定することで図を重ねて書くことがポイントです。