使用geom_sf叠加法、德地图时遇mapping错误的解决求助
解决geom_sf绘制多国地图的错误问题
错误原因很明确:geom_sf()函数的第一个参数是映射(mapping),而非数据集。你直接把de_sf放在第一个参数位置,R会将其识别为映射对象,而不是要绘制的空间数据,因此触发mapping must be created by aes()的错误。
修正后的代码
library(ggplot2) library(sf) library(raster) fr_sf = st_as_sf(getData("GADM", country="FRA", level=1)) de_sf = st_as_sf(getData("GADM", country="DEU", level=0)) ggplot() + # 可不指定初始数据集,后续图层分别指定对应数据 geom_sf(data = fr_sf, fill = "gray90") + geom_sf(data = de_sf, fill = "gray90")
关键说明
- 调用
geom_sf()时,必须通过data =参数明确指定要使用的空间数据集,避免和第一个位置的mapping参数混淆。 - 初始
ggplot()不传入数据集,后续每个图层各自指定data,这种写法更清晰,适配多空间数据图层的绘制场景。
内容的提问来源于stack exchange,提问作者user12388208
相关产品推荐
相关产品推荐

