【R】leafletにグラフを重ねる

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. さいごに

グラフを地図中に描画できると、位置情報とデータ内容を一度に表現できてよいですね!

Add a Comment

メールアドレスが公開されることはありません。