等值區圖(Choropleth map)
現在你已經了解如何繪製多邊形了,接著把這些多邊形放到地圖上吧。記住,你要把 ggplot() 呼叫換成 ggmap(),原本的 ggplot() 呼叫放到 base_layer() 參數裡,然後再照常加入多邊形圖層:
ggmap(corvallis_map_bw,
base_layer = ggplot(ward_sales,
aes(lon, lat))) +
geom_polygon(aes(group = group, fill = 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))