先日、choroplethrを使って、AV女優の出身地分布を可視化しました。
この記事をChoroplethrパッケージの作者の方に捕捉されまして、申し訳ない気持ちになりました。
今回は、真面目に使ってみます。
都道府県別の平均年収を可視化してみます。
dodaさんのホームページにいい感じのデータがありましたので、えいやっとスクレイプします。
library(data.table)
library(dplyr)
library(choroplethr)
library(choroplethrAdmin1)
library(choroplethrMaps)
library(rvest)
Dodaさんのホームページ.htmlをパースして、必要なデータを抜き出します。
rvestパッケージの関数を用いると楽です。
使い方に自信はありませんが、とりあえず年収の平均値と中央値は抜き出せました。
## htmlを取ってくる
doda_html = rvest::html("http://doda.jp/guide/heikin/2012/area/data.html")
## 県名
pref = doda_html %>%
html_node('#ranking_all') %>%
html_node("tbody") %>%
html_nodes(xpath="tr/td[3]") %>%
html_text()
## 平均値
income_mean = doda_html %>%
html_node('#ranking_all') %>%
html_node("tbody") %>%
html_nodes(xpath="tr/td[4]") %>%
html_text()
## 中央値
income_median = doda_html %>%
html_node('#ranking_all') %>%
html_node("tbody") %>%
html_nodes(xpath="tr/td[5]") %>%
html_text()
## 内容確認
income_df = data.table(pref = pref,
income_mean = income_mean,
income_median = income_median)
Choroplethrで可視化します。
県名を英語にして、admin1_choroplethに流しこむだけです。
県名を英語にするのが面倒だったので、以前利用したデータを使い回します。
dat_pref = fread("pops.csv") %>% dplyr::select(-V3)
dat_pref %>% setnames(c("pref", "yomi"))
dat_pref_for_plot =
dat_pref %>% merge(income_df, by = "pref") %>%
mutate(region = tolower(yomi), value = as.integer(income_mean))
## 内容確認
dat_pref_for_plot %>% head
## pref yomi income_mean income_median region value
## 1: 三重県 Mie 416 380 mie 416
## 2: 京都府 Kyoto 403 360 kyoto 403
## 3: 佐賀県 Saga 395 350 saga 395
## 4: 兵庫県 Hyogo 428 380 hyogo 428
## 5: 北海道 Hokkaido 383 350 hokkaido 383
## 6: 千葉県 Chiba 456 400 chiba 456
dat_pref_for_plot %>%
admin1_choropleth(country.name="japan", legend="income",
title = "mean income")
出来ました!