Rで解析:地図にグラフを追加「leaflet.minicharts」パッケージ

Rの解析に役に立つ記事
スポンサーリンク

「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年の都道府県人口を地図に付与

・時系列の都道府県人口を地図に付与
作成データでは変化がわかりにくいので人口部分をランダムに変更


少しでも、あなたの解析が楽になりますように!!

タイトルとURLをコピーしました