Rのパッケージchoroplethr
のビネットの翻訳です.
( 原文: http://cran.r-project.org/web/packages/choroplethr/index.html )
- a) イントロダクション
- b) アメリカの州単位コロプレス図
- c) アメリカの郡単位コロプレス図
- d) アメリカの郵便番号に基づく地図
- e) 国家単位のコロプレス図
- f) 国勢調査の地図
- g) 世界銀行データの地図
- h) コロプレス図の動画
- i) 自分の地図を作る
- j) 行政区画レベル1の地図を作る
i) 自分の地図を作る
choroplethr
はユーザが任意の地図のコロプレス図を作成するのをサポートするために,オブジェクト指向プログラミングを利用しています.もしこの機能に興味がある場合は,先に進むまえに以下の2つの解説を読むことをお勧めします.
-
Rプログラマのための地図作製法. このページではシェープファイルの取得や操作,またRにシェープファイルをインポートする方法に関する基本事項を扱っています.自分の地図を作ることに興味がある場合,まずはこの程度の情報については知っておくべきでしょう.
-
R6クラス入門.
choroplethr
はオブジェクト指向プログラミングの実装にR6
を使っています.自分で地図を作る場合は必ずChoropleth
基底クラスを継承すべきです.このことが何を意味しているのか,基本的なことを理解しておく必要があります.
Choropleth基底クラス
共通の機能を見出して基底クラスにまとめるのがオブジェクト指向プログラミングのカギです.そうすることでクライアント側は多くの共通した反復的な処理を「タダで」手に入れることができます.バージョン2.0のchoroplethr
パッケージにおける基底クラスはChoropleth
と呼ばれ,5つの主要な関数を持っています.もし自分でコロプレス図作成プログラムを作ろうと思えば,(少なくとも)これら5つのステップが必要になるでしょう.
-
initialize(map.df, user.df)
. この関数はコンストラクタです.map.df
はシェープファイルをdata.frame
で表現したものであり,"region"列が必要です.user.df
はユーザのデータであり,"region"列と"value"列が必要です.この関数は入力に対して基本的なエラーチェックを行います. -
clip()
. この関数は,user.df
から地図上に存在しない地域の要素を取り除きます.たとえば,50の州とプエルトリコとワシントンDCのデータを持っている場合があるかもしれませんが,その場合,地図に描画されない地域は取り除いて,discretize()
を呼ぶ前にユーザに警告を出すべきでしょう. -
discretize()
. 州別の人口といった連続的な数値を,離散的な値にする必要があります.たとえば,各州の人口に基づいて七色のうち一色を各州に割り当てたい,という場合があるかもしれません. -
bind()
. 離散化された値を地図に結びつける必要があります.また,データセットが地図上の全ての値を含んでいない場合には,ユーザに警告を出したいと思うかもしれません. -
render()
. 最後のステップは結果を描画することです.最終結果の描画は簡単なこともあれば,複雑なこともあります.たとえば,アメリカの50州を正しいスケールで描画するのはかなり容易ですが,アラスカとハワイを埋め込むのは大変です.
例:世界地図
Choropleth
基底クラスの機能を使えば,国単位のコロプレス図を簡単に作成することができます.世界地図の詳細が知りたい場合はdata(country.map); ?country.map
とタイプしてください.
library(choroplethr)
library(choroplethrMaps)
library(R6)
library(Hmisc)
library(stringr)
library(dplyr)
library(scales)d
library(ggplot2)
# Choropleth基底オブジェクトを継承してクラスを作成
CountryChoropleth = R6Class("CountryChoropleth",
inherit = choroplethr:::Choropleth,
public = list(
# 世界地図の初期化
initialize = function(user.df)
{
data(country.map, package="choroplethrMaps")
super$initialize(country.map, user.df)
}
)
)
# サンプルデータの作成と描画
data(country.regions, package="choroplethrMaps")
df = data.frame(region=country.regions$region, value=sample(1:nrow(country.regions)))
c = CountryChoropleth$new(df)
c$render()
この場合,基底クラスはデフォルトで望ましい振る舞いをしてくれます.必要なのは自分の地図でオブジェクトを初期化することだけです.
$new()
で地図を作成して$render()
を呼ぶだけで地図を描画することができます.地図のカスタマイズの例として,country_choropleth
関数を見てみましょう.
country_choropleth
## function (df, title = "", legend = "", buckets = 7, zoom = NULL)
## {
## c = CountryChoropleth$new(df)
## c$title = title
## c$legend = legend
## c$set_buckets(buckets)
## c$set_zoom(zoom)
## c$render()
## }
## <environment: namespace:choroplethr>
Choropleth
基底クラスを使えば,多くの機能をタダで手に入れることができます.
- 入力のエラーチェック
-
zoom
パラメータを使って地域の一部分にズームインする機能. -
buckets
パラメータを使ってデータをビジュアルに探索する機能 -
title
パラメータとlegend
パラメータで簡単にタイトルと凡例を作成する機能