cucumber flesh

Rを中心としたデータ分析・統計解析らへんの話題をしていくだけ

tabularmaps: カラム地図で行政区の大まかな配置を可視化する

カラム地図と呼ばれるものがあります。 これは日本の47都道府県をはじめとした行政区の配置を表上に圧縮表示することで、それぞれの位置関係をわかりやすく伝えるためのプロジェクトです。

f:id:u_ribo:20200422175004p:plain

最近では、カラム地図の開発者の一人、福野泰介さん (@taisukef) による新型コロナウイルス対策ダッシュボードのページでの「現在患者数 / 対策病床数」の可視化で「カラム地図」を見る機会が増えた人もいるのではないでしょうか。

さて、この「カラム地図」をR言語の中で扱うべく、tabularmapsパッケージの開発を進めています。

github.com

以下、この記事ではtabularmapsの使い方を紹介していきます。

パッケージはCRANには登録されていないため、GitHub経由でインストールを行います。以下のコマンドを実行することでパッケージが利用可能になります。

install.packages("remotes")
remotes::install_github("uribo/tabularmaps")
library(tabularmaps)
library(ggplot2)

可視化の際にggplot2パッケージを利用しているので、そちらも読み込んでおく必要があります。

使い方

現在tabularmapsでは

  • 都道府県 (jpn77)
  • 東京23区 (tky23)
  • ISO-3166による国名 (iso3166)

の3種類に対応しています。括弧内の文字列がパッケージに含まれるデータフレームオブジェクトで、県や区などの対象行政名の位置関係を記録しています。

冒頭の都道府県のカラム地図は次のコマンドにより描画されます。

tabularmap(jpn77, 
           fill = region_kanji, 
           label = prefecture_kanji, 
           size = 3,
           family = "IPAexGothic") +
  theme_tabularmap(base_family = "IPAexGothic") +
  scale_fill_jpregion(lang = "jp",
                      name = "八地方区分")

tabularmap()がカラム地図を表示させる関数として機能します。この関数では第一引数に対象のデータフレームを与えて実行します。 そのほかの引数としてggplot2オブジェクトの審美的要素を決定するfill (塗り分けの色基準)、label (表示するラベル文字列)の変数名を与えます。 これに加え、ggplot2::geom_text()に渡す値を指定可能です。 これはラベルの大きさを調整する size やフォントのための family を使うことを想定しています。

上記のコードでは、tabularmap()に加えてtheme_tabularmap()scale_fill_jpregion()を実行しています。これらの関数はオプションとして利用可能なもので、 よりカラム地図っぽい見た目に調整するためのものです。 都道府県を表示させるカラム地図では地方別に塗り分ける色が決まっているため、それに応じた塗り分けを行うようになります。

続いて東京23区の表示をしてみます。先のコードからtabularmap()に与えるデータとラベル用の変数名を変更するだけです。

tabularmap(tky23,
           label = ward_kanji,
           family = "IPAexGothic") +
  theme_tabularmap(base_family = "IPAexGothic") +
  guides(fill = FALSE)

現実の配置や面積がぼやけてしまう欠点もありますが、 行政区域のデータを用意する必要がないのはカラム地図の大きな利点です。 (カラム地図のレイアウト自体はオープンライセンスで開発されています。)

また本来想定されていたダッシュボードでの利用を考える場合、 表示する際のスペースが有効活用できるのも嬉しいです。 日本の場合、細長くなるのでどうしても隙間ができてしまいますが、カラム地図だと基本的にグリッドになるので無駄が少ないです。

今後の機能

fukuno.jig.jp

本家のカラム地図では、市区町村を対象にしたレイアウトが全国47都道府県分定まったとのことです。 これらの情報を追いながら、tabularmapsパッケージでも市区町村版を追加する作業を進めていくつもりです。

全国のデータを追加するのは時間がかかりそうなので、皆さんからの協力(Pull request)をお待ちしています。

github.com

余談

SNSを見ていると、時々ヘンテコな地図が回ってきます。

白地図上に47都道府県の名前を書き込んでください」

中学生の地理で習うような問題です。 回答を見ていると、有名な東京都や神奈川県、形のわかりやすい北海道などは簡単な様子。 一方で北関東の群馬、栃木、茨城の配置、島根と鳥取の位置関係などを間違えている例をしばしば見かけます(私も苦手でした)。 またそれ以上にトンデモな解答も…。

行政境界の複雑な幾何学模様を認識し記憶することに対する人間の限界を感じます。 それが特に自分とは関わりのない地域であれば尚更です。

また、行政区は人間が勝手に定めたもの。時間の経過とともに境界も変化していきます。

情報を伝えるとき、これらの行政区をどこまで厳密に再現する必要があるでしょうか。

地図を表示するにはポリゴンないしラインデータを用意しなくてはいけない。そう思っていた時期が私にもありました。

ですがそうではなかったのです。

必要なのは、情報を正しく、わかりやすく伝えること。

カラム地図では、現実に対して幾らかの嘘をつくことになりますが、それは許容されうる範囲なのではと思います。

参考