善用 ggplot2 的優勢
你已經看到,可以在 ggmap() 繪圖上疊加 geom_***() 圖層,並在每個圖層中明確指定資料與映射;但這樣有兩個明顯的缺點:之後每個圖層都必須重複指定資料與映射,而且無法使用分面(facetting)。
所幸,ggmap() 提供了化解之道:base_layer 參數。你可以把一個一般的 ggplot() 呼叫傳給 base_layer,在那裡為所有圖層設定預設的資料與映射。
例如,原本的繪圖:
ggmap(corvallis_map) +
geom_point(data = sales, aes(lon, lat))
也可以改成:
ggmap(corvallis_map,
base_layer = ggplot(sales, aes(lon, lat))) +
geom_point()
把 aes(x, y) 與 data 從最初的 geom_point() 轉移到 ggmap() 呼叫中的 ggplot(),你就能用一般 ggplot2 的方式加入分面或額外圖層。
來試試看吧。
本練習屬於課程
在 R 視覺化地理空間資料
動手互動練習
試著完成這個範例程式碼,體驗一下這個練習。
# Use base_layer argument to ggmap() to specify data and x, y mappings
ggmap(corvallis_map_bw, ___) +
geom_point(data = sales, aes(lon, lat, color = year_built))