web-dev-qa-db-ja.com

ggplot2とggmapを使用してRで郵便番号コロプレスを作成する

私は非常に単純なデータのコロプレスを作成しようとしていますが、それは首の痛みのようなものです。アメリカ東部に次の郵便番号があります。これはデータで構成されていますが、あなたはその考えを理解します。

Zip    Freq
11101    10
10014    15
11238   400

約100行など。 Freqの値の範囲は0〜1000で、これらは各郵便番号の色を決定するために使用したい値です。理想的には、地図を国全体ではなく米国東部に焦点を合わせて欲しいと思います。

このデータと各郵便番号でコロプレスを作成したいのですが、郵便番号のシェープファイルをインポートする方法がわかりません。私は このチュートリアル を試しましたが、fortify()ステップでそれ以上のエラーが発生しました。そのチュートリアルの方法がそれを実行するための最良の方法であるかどうかはわかりません。

ggplot2は州と郡に付属しているようですが、郵便番号でマップする方法がわかりません。 (最終的には国勢調査区でマップする予定ですが、今は郵便番号とこの単純なデータセットにシェープファイルを使用する方法を学びたいだけです)

Choroplethrで見つけたすべてのリソースは、現在非推奨となっている関数を使用しています。私はそれを使うために何時間も尻尾を追いかけました、そしてとてもイライラしているので、どんな助けでも大いに感謝されます。

17
garson

choroplethrをご利用いただきありがとうございます。また、Zip_mapの廃止により問題が発生したことをお詫び申し上げます。すべてのZip関連関数を choroplethrZip という別のパッケージに移動しました。

古いバージョンのChoroplethrは、ZIPをChoroplethではなく、散布図としてレンダリングしていました。それらを適切なコロプレスとしてレンダリングするには、CRANには大きすぎるマップ(〜60MB)が必要でした。そのため、github経由でのみ利用できます。

上記にリンクしているgithubページには3つのビネットがあります。基本的に、関数Zip_choroplethは必要なことを正確に実行し、他のすべてのchoroplethr関数と同じように機能する必要があります。 state_zoomを使用して、東海岸の州を拡大します。

# use the devtools package from CRAN to install choroplethrZip from github
install.packages("devtools")
library(devtools)
install_github('arilamstein/[email protected]')
library(choroplethrZip)

data(df_pop_Zip)

# ec = east coast
ec_states = c("maine", "new hampshire", "massachusetts", "rhode island", "connecticut", 
              "new york", "new jersey", "delaware", "maryland", 
              "virginia", "north carolina", "south carolina", "georgia", "florida",
              "pennsylvania", "district of columbia", "vermont", "west virginia")

Zip_choropleth(df_pop_Zip, 
               state_zoom = ec_states, 
               title      = "2012 ZCTA Population Estimates",
               legend     = "Population") + coord_map()    

enter image description here

Zipが非常に小さいため、表示されるのは境界線だけであるため、結果のマップは本質的に読み取り不能です。ボーダーを削除したい場合は、これを試してください:

choro = choroplethrZip::ZipChoropleth$new(df_pop_Zip)
choro$prepare_map()

data(Zip.regions)
choro$legend = "Population"
ec_zips = Zip.regions[Zip.regions$state.name %in% ec_states, "region"]
ec_df   = choro$choropleth.df[choro$choropleth.df$region %in% ec_zips, ]
ec_plot = choro$render_helper(ec_df, "", choro$theme_clean()) + 
              ggtitle("2012 ZCTA Population Estimates")

ec_plot + coord_map() 

enter image description here

将来的には、境界線のないマップを簡単にレンダリングできるオプションを追加する可能性があります。しかし今のところ(バージョン1.3.0)、これは私がそれを行うために見ることができる最も簡単な方法であり、基本的に私が舞台裏で行って、国境なしでレンダリングされる国のZipマップをレンダリングします。

coord_mapはメルカトル図法を強制するだけであることに注意してください。

13
Ari