发挥 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()
将初始 geom_point() 函数中的 aes(x, y) 和 data 移到 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))