今週も特にありません

進捗どうですか?

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")

f:id:masaqol:20191231181433p:plain 神奈川県で「タピオカ」は、東京と比較してどれほど検索されているかが分かる。人口比では、宮城県や栃木県が意外と検索されている地域?どの地域でよく検索されているかなどが可視化することがわかりやすくなる。

JSのHighchartsベースなので、R MarkdownやShinyなどでHTML形式で出力すれば、マウスオーバーで動的に変化する。商用でShinyアプリを利用する場合には、Highchartsのライセンスに注意して利用する必要がある。

https://github.com/jbkunst/highcharter jkunst.com