在R中导入非洲Shapefile后出现多幅地图的技术求助
解决sf包plot生成多幅非洲地图的问题
别担心,这个问题其实是sf包plot()函数的默认特性导致的,很多刚接触Shapefile的新手都会碰到~
问题原因
当你直接对整个sf对象调用plot()时,它会默认为数据框里的每一个属性字段(比如人口面积、国家代码这类非几何列)都生成一幅对应的专题地图,所以才会出现多幅图堆叠的情况。
几种解决办法
- 只画简单轮廓(最直接):提取sf对象的几何部分单独绘图,这样就只会生成一幅非洲各国的轮廓图:
plot(st_geometry(africa)) - 基于单个属性绘图:如果你想展示某一个特定属性的分布,只需要指定对应的列名即可(比如假设你想画名为
"NAME"或"POP"的列):# 替换成你实际需要的列名 plot(africa["NAME"]) - 用ggplot2更灵活绘图:如果后续需要做更个性化的地图调整(比如加标题、改颜色),推荐用ggplot2包,默认也只会生成一幅轮廓图:
library(ggplot2) ggplot() + geom_sf(data = africa) + labs(title = "非洲国家轮廓图") # 可选:添加标题
小提示
你可以用names(africa)查看这个sf对象里包含的所有属性列,就能清楚知道之前为什么会生成那么多图啦~
内容的提问来源于stack exchange,提问作者Vivi Gro
相关产品推荐
相关产品推荐

