階級区分図(コロプレスマップ)
多角形の描画が分かったところで、今度はその多角形を地図上に重ねてみましょう。ggplot() の呼び出しを ggmap() に置き換え、元の ggplot() の呼び出しは base_layer() 引数に移動します。あとは通常どおり多角形レイヤーを追加します。
ggmap(corvallis_map_bw,
base_layer = ggplot(ward_sales,
aes(lon, lat))) +
geom_polygon(aes(group = group, fill = ward))
まずはコンソールで試してみてください。
あれ、うまく見えません。Ward 1、3、8 の境界がギザギザでおかしいですね。何が起きているのでしょうか。区の境界の一部が地図の範囲外にはみ出しているのが原因です。ggmap() のデフォルト設定では、地図の外側にあるデータはプロット前に切り落とされます。そのため一部の多角形の境界点が欠け、残った点だけで結ばれてしまい、形が崩れて見えます。
心配いりません。解決策があります。ggmap() にはこの挙動を制御する引数があります。extent = "normal" と maprange = FALSE を指定すると、プロットの境界が地図の範囲ではなくデータの範囲に基づくようになり、切り落としを防げます。
この演習はコースの一部です
R で地理空間データを可視化する
実践的なインタラクティブ演習
このサンプルコードを完成させて、この演習に挑戦してみましょう。
# Fix the polygon cropping
ggmap(corvallis_map_bw,
base_layer = ggplot(ward_sales, aes(lon, lat))) +
geom_polygon(aes(group = group, fill = ward))