JapanPrefMap()
NipponMapは、サークルカルトグラムを含むコロプレス地図作成のための日本のデジタル地図データです。コロプレス地図とは、地図上で統計による階級区分を表現する方法の一つで、統計値を複数の階級に区分し、都道府県等の区域別に、各区域の階級を色分けによって表す地図のことです。カルトグラムとは統計データの大小を地図上の面積や距離の伸縮により表現したものであり、サークルカルトグラムは区域を円で示し、円の大小で統計データの大小を表現したものです。
関数JapanPrefMapは、都道府県で区分された単純な日本地図を描画できます。
JapanPrefMap()
当関数は都道府県のJISコード順に色ベクトルを受け取ります。都道府県別の公式統計はJISコード順が多いので、order関数やmerge関数を適用する手間がなく、簡単にコロプレス地図の色列を作ることができます。
次のコードでは、RColorBrewerパッケージの「Set1」というパレットを使って都道府県をJISコード順に赤、青、緑、紫の4色に色分けしています。例えば、JISコードが1の北海道は赤、2の青森県は青、3の岩手県は緑、4の宮城県は紫・・・となります。
cols <- RColorBrewer::brewer.pal(4,"Set1") #4色の「Set1」パレットを取得
print(cols)[1] "#E41A1C" "#377EB8" "#4DAF4A" "#984EA3"
JapanPrefMap(col = cols, border = gray(0.8), axes = TRUE) #border = gray(0.8):都道府県の境界線を明度0.8のグレーにする、axes = TRUE:地図の軸を表示する
foreignパッケージを使って、NipponMap内のshapes/jpn.dbfファイルから日本の地図データのDBFファイルを読み込み、当データに含まれる2010年国勢調査による人口のデータセットからコロプレス地図を作成します。
#foreignパッケージを使ってDBFファイルを読み込み
dat <- foreign::read.dbf(system.file("shapes/jpn.dbf", package="NipponMap"))
head(dat, 15) SP_ID jiscode name population region
1 1 01 Hokkaido 5506419 Hokkaido
2 2 02 Aomori 1373339 Tohoku
3 3 03 Iwate 1330147 Tohoku
4 4 04 Miyagi 2348165 Tohoku
5 5 05 Akita 1085997 Tohoku
6 6 06 Yamagata 1168924 Tohoku
7 7 07 Fukushima 2029064 Tohoku
8 8 08 Ibaraki 2969770 Kanto
9 9 09 Tochigi 2007683 Kanto
10 10 10 Gunma 2008068 Kanto
11 11 11 Saitama 7194556 Kanto
12 12 12 Chiba 6216289 Kanto
13 13 13 Tokyo 13159388 Kanto
14 14 14 Kanagawa 9048331 Kanto
15 15 15 Niigata 2374450 Chubu
op <- par(bg = "lightblue") #プロットの背景色を水色(skyblue)に設定
p <- JapanPrefMap(col = "ivory") #日本地図をアイボリー(ivory)で描画
col <- c("blue", "skyblue") #円の枠の色と背景色を設定
pop <- dat$population / 1e+7 #読み込んだデータから人口を取得し、千万で割る
head(pop, 15) [1] 0.5506419 0.1373339 0.1330147 0.2348165 0.1085997 0.1168924 0.2029064
[8] 0.2969770 0.2007683 0.2008068 0.7194556 0.6216289 1.3159388 0.9048331
[15] 0.2374450
symbols(p, circles = sqrt(pop / (2 * pi)),
inches = FALSE,
fg = col[1],
bg = col[2],
add = TRUE
) #各都道府県に対応する円を描画。円の大きさは人口に基づき、色は枠col[1]、背景col[2]で設定。
idx <- c(1e+6, 5e+6, 1e+7)
pos <- legend("bottomright",
legend = format(idx, scientific = 10, big.mark = ","),
title = "Population (2010)",
bg = "white",
x.intersp = 2,
y.intersp = 1.5
) #凡例をプロットの右下に追加
symbols(pos$text$x- 1,
pos$text$y,
circles = sqrt(idx / 1e+7 / (2 * pi)),
inches = FALSE,
fg = col[1],
bg = col[2],
add = TRUE
) #凡例の近くに円を描画
par(op) #元のプロットパラメータに戻すJapanPrefCartogram関数は、日本の都道府県で区分された単純なサークルカルトグラムを描画します。円の大きさは平成27年国勢調査より取得した各都道府県の2015年の人口を表しており、現在のところ大きさは固定です。自由に変更できるのは、色とその他のグラフィック・パラメータのみです。なお、色の順序は都道府県のJISコード順に合わせる必要があります。
引数を設定しない場合は、シンプルなサークルカルトグラムが出力されます。
JapanPrefCartogram()
引数を設定することで色やラベルを設定できます。ここでは、都道府県を虹色のグラデーションとなるように色分けし、都道府県名がラベリングされるようにしています。
op <- palette(rainbow(47, end = 0.9)) #47色の虹の色を生成し、パレットとして設定
xy <- JapanPrefCartogram(col = 1:47, fg = gray(0.6)) #カルトグラムの作成
lb <- as.character(dat$name) #先ほど読み込んだDBFファイルから都道府県名を取得
text(xy, lb, cex = 0.6)
palette(op) #元のカラーパレットに戻す