始める無料で始める

階級区分図(コロプレスマップ)

多角形の描画が分かったところで、今度はその多角形を地図上に重ねてみましょう。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))
コードを編集して実行