choroplethr - Vignettes - c) アメリカの郡単位コロプレス図

Rのパッケージ`choroplethr`のビネットの翻訳です．
( 原文: http://cran.r-project.org/web/packages/choroplethr/index.html )

* a) [イントロダクション](http://qiita.com/nakamichi/items/23730349f31a377fb071)
* b) [アメリカの州単位コロプレス図](http://qiita.com/nakamichi/items/b8267674b610ef6e1cab)
* c) [アメリカの郡単位コロプレス図](http://qiita.com/nakamichi/items/2f63dcfb7b1cc407d87c)
* d) [アメリカの郵便番号に基づく地図](http://qiita.com/nakamichi/items/889d3883e9b2ff8e2cdf)
* e) [国家単位のコロプレス図](http://qiita.com/nakamichi/items/5090b4dadeed42c2e13c)
* f) [国勢調査の地図](http://qiita.com/nakamichi/items/de929da9335f96f6468c)
* g) [世界銀行データの地図](http://qiita.com/nakamichi/items/66fa782bb3104dd815bf)
* h) [コロプレス図の動画](http://qiita.com/nakamichi/items/02ca0f678933405cf18f)
* i) [自分の地図を作る](http://qiita.com/nakamichi/items/99ff93769f4f67b97d18)
* j) [行政区画レベル1の地図を作る](http://qiita.com/nakamichi/items/8fde40a12c6aca2abbd3)

----------


# c) アメリカの郡単位コロプレス図 #

`county_choropleth`関数でアメリカの郡単位のコロプレス図を作成することができます．

```{r}
library(choroplethr)

?df_pop_county
data(df_pop_county)

?county_choropleth
county_choropleth(df_pop_county)
```
![us-county-pop.png](https://qiita-image-store.s3.amazonaws.com/0/58917/d890ef9a-d065-775a-d62f-c6631acd2dcc.png)

上で示したように，`county_choropleth`に必須の引数はデータフレームだけです．
オプション引数は`?county_choropleth`とタイプすれば見ることができます．


## データ要件 ##

`county_choropleth`関数に渡すデータフレームは"region"と"value"という名前の列を持っている必要があります．
"region"列の要素は`choroplethr`が使用している地図の地域名と**厳密に**一致している必要があります．
これらの地域名は`county.regions`オブジェクトで定義されています．

```{r}
library(choroplethrMaps)

?county.regions
data(county.regions)
head(county.regions)
```

```{r}
##    region county.fips.character county.name state.name
## 1    1001                 01001     autauga    alabama
## 36   1003                 01003     baldwin    alabama
## 55   1005                 01005     barbour    alabama
## 15   1007                 01007        bibb    alabama
## 2    1009                 01009      blount    alabama
## 16   1011                 01011     bullock    alabama
##    state.fips.character state.abb
## 1                    01        AL
## 36                   01        AL
## 55                   01        AL
## 15                   01        AL
## 2                    01        AL
## 16                   01        AL
```

`choroplethr`を使用するためには，`county.regions`の"region"列の命名規則に従わなければなりません．
つまり，FIPS（連邦情報処理標準）の郡コードの数値（先頭のゼロを省いたもの）を使用する必要があります．


## データの探索 ##

`county_choropleth` 関数にはデータの探索を助ける三つの引数が用意されています．
`num_colors`と`state_zoom`，`county_zoom`引数です．
`num_colors`の値はデフォルトでは7です．これは7種類の色が使用され，それぞれの色で等しい数の郡が塗り分けられるということです．
`num_colors`が1の場合は連続的なカラースケールが使用されます．
`state_zoom`と`county_zoom`はともにデフォルトでは`NULL`であり，全ての郡が表示されます．

州単位のズームの例として，`choroplethr`でアメリカ西海岸の郡の人口を表示してみましょう．外れ値はロサンゼルス郡です．

```{r}
county_choropleth(df_pop_county,
                 title      = "2012 Population Estimates",
                 legend     = "Population",
                 num_colors = 1,
                 state_zoom = c("california", "washington", "oregon"))
```

![us-county-pop-zoom.png](https://qiita-image-store.s3.amazonaws.com/0/58917/1854a0bc-25f3-9c49-d7a6-9fd5113794d1.png)

郡単位のズームの例として，サンフランシスコ沿岸部の9郡の人口を表示してみましょう．

```{r}
# FIPS codes for Alameda, Contra Costa, Marin, Napa, San Francisco, San Mateo, Santa Clara, 
# Solano, and Sonoma counties
bay_area_counties = c(6001, 6013, 6041, 6055, 6075, 6081, 6085, 6095, 6097)
county_choropleth(df_pop_county,
                 title       = "2012 Population Estimates",
                 legend      = "Population",
                 num_colors  = 1,
                 county_zoom = bay_area_counties)
```

![us-county-pop-zoom2.png](https://qiita-image-store.s3.amazonaws.com/0/80093/7f9fcb29-09fa-071d-fce3-eb456b48cbc7.png)


## 高度なオプション ##

上で例示したオプション引数によるカスタマイズ以上のことがしたい場合は，
`CountyChoropleth`オブジェクトを作成する必要があります．
`choroplethr`はオブジェクト指向プログラミングを活用するために`R6`を使っています．
以下の例ではパレットをカスタマイズするために`Choropleth`基底オブジェクトを
`ggplot2_scale`を使って拡張しています．


```{r}
library(ggplot2)

choro = CountyChoropleth$new(df_pop_county)
choro$title = "2012 Population Estimates"
choro$ggplot_scale = scale_fill_brewer(name="Population", palette=2)
choro$render()
```

![us-county-pop-green.png](https://qiita-image-store.s3.amazonaws.com/0/58917/dc6de009-0a81-9722-49d3-7daa66b49e85.png)

**注意：** `CountyChoropleth`オブジェクトに手動でスケールを設定するときは注意が必要です．特に，`choroplethr`ではアラスカとハワイを地図に差し込むために`ggplot2`のカスタムアノテーションを使用しているので，以下の手順に従わないと地図の主要部分と差し込み部分のスケールが一致しません．

1. 離散的なスケールの場合は，上の例のようにdrop=FALSE引数をスケールの関数に渡してください．

2. 連続的なスケールの場合は，データセット全体の最小値と最大値を含んだlimits引数を渡してください．