ggplotとjpndistrictで地図を書く①
まず必要となるパッケージをR studioに読み込みます。
library(tidyverse) #ggplot2などでグラフを作成する、データをきれいにするために使用 library(sf) #sf(simple features)のデータを扱うのに使用 library(jpndistrict) #元となるデータ
先ほど読み込んだパッケージ"jpndistrict"内に"jpn_cities"のデータセットが含まれています。これは区市町村レベルのデータセットで、その13番目が東京都です。
そこで13番目のデータを抽出します。ただし、島しょ地域が含まれていると、地図が見にくくなるため、今回は島しょ地域を除きます(54番目以降が島しょ地域)。
pref13 <- jpn_cities(13)[1:53, ] ggplot(pref13) + geom_sf()
次にmutate関数を使って、先ほど作成した"pref13"に新たに"HealthCenter"という名前の変数(列)を作成し、そこに管轄となる保健所名を入れていきます。作成したものを新たに"tokyo"とします。
tokyo <- pref13 %>% mutate(HealthCenter = case_when( city == "千代田区" ~ "千代田区", city == "中央区" ~ "中央区", city == "港区" ~ "港区", city == "新宿区" ~ "新宿区", city == "文京区" ~ "文京区", city == "台東区" ~ "台東区", city == "墨田区" ~ "墨田区", city == "江東区" ~ "江東区", city == "品川区" ~ "品川区", city == "目黒区" ~ "目黒区", city == "大田区" ~ "大田区", city == "世田谷区" ~ "世田谷区", city == "渋谷区" ~ "渋谷区", city == "中野区" ~ "中野区", city == "杉並区" ~ "杉並区", city == "豊島区" ~ "豊島区", city == "北区" ~ "北区", city == "荒川区" ~ "荒川区", city == "板橋区" ~ "板橋区", city == "練馬区" ~ "練馬区", city == "足立区" ~ "足立区", city == "葛飾区" ~ "葛飾区", city == "江戸川区" ~ "江戸川区", city == "八王子市" ~ "八王子市", city == "町田市" ~ "町田市", city == "立川市" ~ "多摩立川", city == "武蔵野市" ~ "多摩府中", city == "三鷹市" ~ "多摩府中", city == "青梅市" ~ "西多摩", city == "府中市" ~ "多摩府中", city == "昭島市" ~ "多摩立川", city == "調布市" ~ "多摩府中", city == "小金井市" ~ "多摩府中", city == "小平市" ~ "多摩小平", city == "日野市" ~ "南多摩", city == "東村山市" ~ "多摩小平", city == "国分寺市" ~ "多摩立川", city == "国立市" ~ "多摩立川", city == "福生市" ~ "西多摩", city == "狛江市" ~ "多摩府中", city == "東大和市" ~ "多摩立川", city == "清瀬市" ~ "多摩小平", city == "東久留米市" ~ "多摩小平", city == "武蔵村山市" ~ "多摩立川", city == "多摩市" ~ "南多摩", city == "稲城市" ~ "南多摩保健所", city == "羽村市" ~ "西多摩", city == "あきる野市" ~ "西多摩", city == "西東京市" ~ "多摩小平", city == "西多摩郡 瑞穂町" ~ "西多摩", city == "西多摩郡 日の出町" ~ "西多摩", city == "西多摩郡 檜原村" ~ "西多摩", city == "西多摩郡 奥多摩町" ~ "西多摩")) head(tokyo) city_code city geometry HealthCenter <chr> <chr> <S3: sfc_GEOMETRY> <chr> 13101 千代田区 <S3: sfc_GEOMETRY> 千代田区 13102 中央区 <S3: sfc_GEOMETRY> 中央区 13103 港区 <S3: sfc_GEOMETRY> 港区 13104 新宿区 <S3: sfc_GEOMETRY> 新宿区 13105 文京区 <S3: sfc_GEOMETRY> 文京区 13106 台東区 <S3: sfc_GEOMETRY> 台東区 6 rows
2.1 保健所ごとに色分けを行う
ggplot(tokyo) + geom_sf(aes(fill = HealthCenter), show.legend = FALSE)
保健所数が多すぎて、色の違いが分かりにくいです。
2.2 保健所の凡例を追加します。
ggplot(tokyo) + geom_sf(aes(fill = HealthCenter), show.legend = FALSE) + geom_sf_label(aes(label = HealthCenter), size = 3, label.padding = unit(0.7, "mm"))
保健所数が多すぎてみずらいです。
3.1 新たに点をプロットしたいときのデータの作成方法
myhome <- tibble::tribble( ~city, ~lat, ~lon, "My Home", 139.65, 35.62, )
3.2 島しょ地域を除いた役場を抽出
df_office13 <- jpn_admins(13) %>% slice(1:172, 199)
3.3 点をプロットするのに2パターンある。一つ目は直接xyを入力する方法.2つめは事前に作っておいたデータを使う方法
ggplot() + geom_sf(data = tokyo, mapping = aes(fill = city_code), show.legend = FALSE) + geom_sf(data = df_office13, show.legend = FALSE, size = 0.1, alpha = 0.5) + geom_point(mapping = aes(x = 139.691, y = 35.689), color = "red") + geom_point(data = myhome, mapping = aes(x = lat, y = lon), color = "white", shape = 2)