
前回までmapsパッケージ所蔵の地図データの使い方など練習。結構「世界地図」は描ける気がしてきましたが肝心の日本地図がイケません。そこで今回は、追加のパッケージ2つ、mapdataとNipponMapを導入し、3通りの方法で日本地図を描いてみたいと思います。並べてみると3者3様、個性というかクセ強。
※「データのお砂場」投稿順Indexはこちら
※使用させていただいている Rのversionは 4.3.1。RStudioは 2024.04.2+764 “Chocolate Cosmos” です。
日本地図を描く3つの方法
多分、R上で日本地図を描く方法は3つといわずもっとあるような気がするのですが、今回は手近で使える(すべてCRANから一撃でインストール可能)以下の3つを比べてみたいと思います。
-
- mapsパッケージの世界地図から japan を取り出す方法
- mapdataパッケージの「県別」日本地図を使用する方法
- NipponMapパッケージの日本地図描画関数を使用する方法
1の方法は、前回までさんざん使用させていただいてきた世界地図から日本部分を取り出して使う方法です。過去回で練習したいろいろのテクがそのまま使えますが、元は中低解像度の世界地図であり、日本の事情を御存じない方が編集したデータなのではないかと思われるので、ビミョーな部分あり。
2の方法は、以下のURLにある mapdataパッケージを使うものです。
このパッケージはmapsパッケージの「追加地図データ」的な立ち位置で使える、日本、中国、ニュージーランドなどの「高解像度」なデータです。mapsの地図データの使い方の延長上でより高精細な地図が使えるものみたいです。日本地図については以下に解説文書あり。
慶応義塾大学の Ritei Shibata様(日本人だよね)がフォーマットされたデータを提供されているみたいです。
3.の方法は、Susumu Tanimura様(日本人だよね)のNipponMapというパッケージを使用するものです。こちらは mapsパッケージの系統とはことなり、独自関数で地図を描画するスタイルです。「都道府県コード」(米国のFIPSコードみたいなものか?素人老人は知らんかった)に対応しており、「都道府県コード」に対応した統計データなどの可視化にバッチリな感じらしいです。
なお、都道府県コードについては以下に。
https://nlftp.mlit.go.jp/ksj/gml/codelist/PrefCd.html
mapsの世界地図から日本を抽出するばあい
mapsパッケージのみロードしておけば即使えるのでお手軽ですが、いろいろビミョーです。とりあえずのコードが以下に。
library(maps) map("world", "Japan", col="green", fill=TRUE) title("Japan {maps}")
直ぐに気が付くのは、主要な島が含まれているなかで、日本人ならば含める筈の北方領土部分が描かれないことです。元が世界地図なのでデータがない筈はなく、編集した方がそういう機微に触れる問題を御存じなかったのではないかと思います。
mapdataの日本地図
mapdataパッケージには世界地図も含まれていますが、日本のみの地図も含まれています。そしてこちらは都道府県別に利用可能。米国の州別地図的な利用ができるフォーマットになっているみたい。
library(mapdata) map('japan', col="green", fill=TRUE) title("Japan {mapdata}")
かなり詳細な地図になっていて嬉しいのですが、滋賀県をみて気づきました。琵琶湖ないじゃん!どうも湖水についてはまた別の話みたいです。
以下では茨城県の県別地図を描いてます。海岸線と湖水の状況を御覧じろ。
map('japan', 'Ibaraki', col="green", fill=TRUE) title("Ibaraki, Japan {mapdata}")
人工であっても鹿島港などの「海岸」に相当するものは描かれてますが、鹿島港の幅以上の水面がある利根川から常陸利根川、霞ケ浦水系など「河川」系はまったく描かれてないです。
NipponMapの地図描画関数
このパッケージを使って描く場合の簡単なコードが以下に。
パッケージのURLが以下に。
colvec <- rep("green", 47) JapanPrefMap(col=colvec) title("Japan {NipponMap}")
このパッケージの最大の特徴は都道府県コード順のベクトル値で都道府県の色などを塗り分けられるというところです。都道府県コードと紐づけられている統計データなどあれば、塗分けがお楽じゃないかと。また、過去回で練習したカルトグラムを描く関数などもあるみたいです。
何か統計データでも入手して実践あるのみ。大丈夫か?