「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年の都道府県人口を地図に付与
・時系列の都道府県人口を地図に付与
作成データでは変化がわかりにくいので人口部分をランダムに変更
少しでも、あなたの解析が楽になりますように!!