highcharterで日本地図へのマッピング
都道府県名や都道府県コードなどの地理的情報、そして、それらのユーザ数や売上げなどのデータがあり、その濃淡を日本地図へマッピングして可視化したいという場合がある。ggplot2
でやってしまえるところではあるが、highcharter
パッケージを利用すれば意外と簡単に可視化することができる。
Googleトレンドから、あるキーワード(検索クエリ)の1年間の都道府県ごとの検索スコアデータを日本地図にマッピングしてみる。
> library(tidyverse) > library(gtrendsR) > library(highcharter) > > keyword <- "タピオカ" > gt <- gtrends(keyword = keyword, geo = "JP", gprop = "web", time = "today 12-m") > gt$interest_by_region %>% head() location hits keyword geo gprop 1 Tokyo 100 タピオカ JP web 2 Osaka Prefecture 95 タピオカ JP web 3 Miyagi Prefecture 85 タピオカ JP web 4 Kanagawa Prefecture 84 タピオカ JP web 5 Tochigi Prefecture 81 タピオカ JP web 6 Saitama Prefecture 79 タピオカ JP web
interest_by_region
が都道府県ごとの検索スコアのデータになっている。Googleトレンドの仕様で一番検索が多い都道府県の値を100とした相対スコア値になっている。地図上にマッピングするために都道府県名と検索スコアのみのデータに加工する。
> map_data <- gt$interest_by_region %>% + mutate(location = stringr::str_replace(location, " Prefecture", "")) %>% + select(location, hits)
あとは、地図情報を合わせることでマッピングすることができる。
> hcmap("countries/jp/jp-all", data = map_data, name = keyword, + value = "hits", joinBy = c("name", "location"), borderColor = "#f0f0f0")
神奈川県で「タピオカ」は、東京と比較してどれほど検索されているかが分かる。人口比では、宮城県や栃木県が意外と検索されている地域?どの地域でよく検索されているかなどが可視化することがわかりやすくなる。
JSのHighchartsベースなので、R MarkdownやShinyなどでHTML形式で出力すれば、マウスオーバーで動的に変化する。商用でShinyアプリを利用する場合には、Highchartsのライセンスに注意して利用する必要がある。