「leaflet」パッケージを利用して地図にグラフを追加することができるパッケージの紹介です。なお、グラフは時系列でインタラクティブにも表示が可能です。
使用したデータは「estatapi」パッケージを利用してe-Statから取得し利用しています。「estatapi」パッケージは非常に便利です。また、作成データの出力はRStudioのViewerからExport、Save as Web Pageからが便利です。
・e-Stat公式サイト
https://www.e-stat.go.jp/SG1/estat/eStatTopPortal.do
・Rで解析:政府統計の総合窓口(e-Stat)データ取得に便利です!「estatapi」パッケージ
https://www.karada-good.net/analyticsr/r-457
パッケージバージョンは0.2.0。windows 10のR version 3.3.3で動作を確認しています。
パッケージのインストール
下記コマンドを実行してください。
#パッケージのインストール
install.packages("leaflet.minicharts")
データの準備
詳細はコマンド、各パッケージのヘルプを確認してください。
#必要なパッケージのインストール
install.packages("estatapi")
install.packages("ggmap")
install.packages("stringi")
install.packages("tidyr")
###都道府県別の人口推移データを取得#####
#取得に便利な「estatapi」パッケージ
#アプリIDの取得はhttps://www.karada-good.net/analyticsr/r-457を参照
library("estatapi")
#アプリIDの入力
AppID <- "アプリID"
#都道府県別の人口推移データ一覧を取得
estat_getStatsList(appId = AppID, searchWord = "都道府県,男女別人口-総人口")
#平成28年10月1日現在人口推計のデータを取得
GatData <- estat_getStatsData(appId = AppID,
statsDataId = "0003171303")
#男女計を除く
ExMainData <- subset(GatData, !(GatData[, 4] == "男女計"))
#全国を除く
ExMainData <- subset(ExMainData, !(ExMainData[, 8] == "全国"))
#総人口を除く
ExMainData <- subset(ExMainData, !(ExMainData[, 6] == "総人口"))
########
###都道府県の緯度経度を取得#####
#取得に便利な「ggmap」と「stringi」パッケージ
library("ggmap")
library("stringi")
#都道府県名を取得
Prefectures <- unique(ExMainData[, 8])
#処理
LonLatData <- NULL
for(i in seq(nrow(Prefectures))){
PrefeLoc <- cbind(Pref = Prefectures[[1]][i], geocode(stri_encode(Prefectures[[1]][i], "", "utf-8"), source = "google"))
LonLatData <- rbind(LonLatData, PrefeLoc)
}
########
####人口データに都道府県の緯度経度を付与#####
MainLonLatData <- cbind(rep(as.character(LonLatData[, 1]), each = 5, time = 2),
rep(LonLatData[, 2], each = 5, time = 2),
rep(LonLatData[, 3], each = 5, time = 2))
#プロットデータ
AnaData <- data.frame(ExMainData[, 8], MainLonLatData[, 2], MainLonLatData[, 3],
ExMainData[, 4], ExMainData[, 10], ExMainData[, 12])
#データラベルを編集
colnames(AnaData) <- c("Pref", "Lon", "Lat", "Sex", "Year", "Value")
#データの形を変更
library("tidyr")
AnaData <- spread(data = AnaData, key = "Sex", value = "Value")
########
コマンドの紹介
詳細はコマンド、パッケージのヘルプを確認してください。
#パッケージの読み込み
library("leaflet.minicharts")
library("leaflet")
#地図のベースを作成
BaseMap <- leaflet(width = "100%", height = "400px") %>%
addTiles() %>%
setView(lng = 139.6917064, lat = 35.6894875, zoom = 4)
#平成28年の都道府県人口を地図に付与
PlotData <- subset(AnaData, AnaData[, 4] == "平成28年")
BaseMap %>%
addMinicharts(
lng = PlotData[, 2],
lat = PlotData[, 3],
#グラフ形式を指定:"bar"も指定可能
type = "pie",
#グラフデータを指定
chartdata = PlotData[, 5:6],
#ポップアップデータを設定
popup = PlotData[, 1],
#グラフの色を指定
colorPalette = c("#fef0e7", "#f5c971")
)
#時系列の都道府県人口を地図に付与
#作成データでは変化がわかりにくいので人口部分をランダムに変更
AnaData[, 5] <- sample(AnaData[, 5], 235, replace = TRUE)
AnaData[, 6] <- sample(AnaData[, 6], 235, replace = TRUE)
BaseMap %>%
addMinicharts(
lng = AnaData[, 2],
lat = AnaData[, 3],
type = "bar",
chartdata = AnaData[, 5:6],
popup = AnaData[, 1],
colorPalette = c("red", "blue"),
#時系列データを指定
time = AnaData[, 4],
width = 45, height = 45
)
出力例
各グラフをクリックすると都道府県名が表示されます。
・平成28年の都道府県人口を地図に付与
・時系列の都道府県人口を地図に付与
作成データでは変化がわかりにくいので人口部分をランダムに変更
少しでも、あなたの解析が楽になりますように!!