【R】leafletにグラフを重ねる
2020年8月6日
1. はじめに
地図上にグラフを重ねたいときってありますよね。leafletのようなインタラクティブな地図にグラフを重ねられると最高です。leaflet.minicharts
というパッケージがあるので、これを使ってみます。
”Rで解析:地図にグラフを追加「leaflet.minicharts」パッケージ”のサイトを参考にさせていただきました。
2. インストール
CRANからインストールします。
install.packages("leaflet.minicharts")
3. つかってみる
3.1 データの準備
都道府県別の人口推移データをe-Statから取得します。このために、estatapi
というパッケージを利用します。平成28年10月1日現在人口推計のデータを取得します。また、jpndistrict
パッケージを利用して、各都道府県の県庁所在地の緯度経度を取得します。
library("estatapi") library("tidyverse") library("jpndistrict") AppID <- "<<YourOwnAppID>>" estat_getStatsList(appId = AppID, searchWord = "都道府県,男女別人口-総人口") GatData <- estat_getStatsData(appId = AppID, statsDataId = "0003171303") dat1<-as.data.frame(jpnprefs) SelectDat <- GatData %>% filter(!(GatData[, 4] == "男女計") & #男女計を除く !(GatData[, 8] == "全国") & #全国を除く !(GatData[, 6] == "総人口") & #総人口を除く (GatData[, 9] == "2016000000")) %>% #2016年のみ抽出 select(pref=`全国・都道府県`, sex=男女別, value=value) %>% cbind(., cap_lat=dat1$capital_latitude, cap_lng=dat1$capital_longitude) %>% spread(key = sex, value = value)
こんな風に、都道府県名(pref),県庁所在地緯度(cap_lat),県庁所在地経度(cap_lng), 女、男のデータが得られます。
> SelectDat
pref cap_lat cap_lng 女 男
1 愛知県 35.18136 136.9063 3657 3667
2 愛媛県 33.83922 132.7655 721 645
3 茨城県 36.36583 140.4711 1435 1427
4 岡山県 34.65525 133.9197 985 911
5 沖縄県 26.21242 127.6791 726 701
6 岩手県 39.70197 141.1544 654 609
7 岐阜県 35.42333 136.7606 1022 963
8 宮崎県 31.90769 131.4203 578 514
9 宮城県 38.26811 140.8693 1182 1131
10 京都府 35.01161 135.7681 1335 1224
11 熊本県 32.80306 130.7078 933 832
12 群馬県 36.38936 139.0633 975 950
13 広島県 34.38519 132.4552 1443 1356
14 香川県 34.34278 134.0464 497 467
15 高知県 33.55881 133.5311 380 337
16 佐賀県 33.26353 130.3008 435 389
17 埼玉県 35.86161 139.6453 3587 3581
18 三重県 34.71864 136.5055 911 864
19 山形県 38.25539 140.3395 573 534
20 山口県 34.17806 131.4737 727 655
21 山梨県 35.66214 138.5683 417 401
22 滋賀県 35.01775 135.8548 706 686
23 鹿児島県 31.59667 130.5573 864 766
24 秋田県 39.71975 140.1022 533 473
25 新潟県 37.91611 139.0365 1171 1102
26 神奈川県 35.44372 139.6381 4497 4489
27 青森県 40.82200 140.7472 683 606
28 静岡県 34.97558 138.3826 1838 1785
29 石川県 36.56100 136.6566 588 552
30 千葉県 35.60733 140.1063 3081 3056
31 大阪府 34.69372 135.5024 4498 4174
32 大分県 33.23953 131.6092 606 545
33 長崎県 32.75028 129.8778 721 637
34 長野県 36.64853 138.1942 1055 1005
35 鳥取県 35.50097 134.2352 295 271
36 島根県 35.46806 133.0487 355 329
37 東京都 35.69383 139.7033 6693 6514
38 徳島県 34.07028 134.5549 390 356
39 栃木県 36.55503 139.8828 973 965
40 奈良県 34.68517 135.8048 712 635
41 富山県 36.69586 137.2136 541 508
42 福井県 36.06400 136.2196 397 376
43 福岡県 33.59008 130.4016 2667 2387
44 福島県 37.76089 140.4734 954 937
45 兵庫県 34.68944 135.1958 2844 2594
46 北海道 43.06208 141.3544 2816 2511
47 和歌山県 34.23047 135.1709 502 447
3.2 地図描画
library("leaflet.minicharts") library("leaflet") #地図の作成 leaflet(width = "100%", height = "400px") %>% addTiles() %>% setView(lng = 139.6917064, lat = 35.6894875, zoom = 4) %>% addMinicharts( lng = SelectDat$cap_lng, lat = SelectDat$cap_lat, type = "bar", chartdata = SelectDat[,4:5], colorPalette = c("red", "blue"), width = 45, height = 45 )
このようなグラフが入った地図ができます。
4. さいごに
グラフを地図中に描画できると、位置情報とデータ内容を一度に表現できてよいですね!