choroplethr包与ggplot2绘制分级地图渲染效果差异问题
修复方案
- 优先使用sf空间对象直接绘图(推荐)
ggplot2已原生支持sf格式空间数据,无需手动将shapefile拆解为带long、lat字段的长表,可完全避免点顺序、group分组错误导致的连线异常,修改后代码如下:library(sf) fig <- ggplot(data = merge.shp) + geom_sf(aes(fill = sqm_cat), na.rm = FALSE) + scale_fill_brewer("", drop = FALSE, na.value = "black") + theme_void() + ggtitle("People per square kilometers") + coord_sf() - 若必须使用long/lat格式的长表绘图,先完成两步校验
- 绘图前对数据按
group和顺序字段排序:shapefile转为长表时默认携带order字段,标记每个多边形内坐标点的绘制顺序,merge、filter操作会打乱该顺序,提前排序即可修复连线错乱问题:
merge.shp <- merge.shp %>% arrange(group, order)- 校验
group字段取值:确保同一个多边形的所有坐标点归属同一个group值,不同多边形的group值不重复,避免跨区域连点。
- 绘图前对数据按
- 特殊场景适配:如果绘制的区域包含带洞的多边形,确保洞的坐标点顺序和外轮廓的旋转方向相反(外轮廓顺时针、洞逆时针即可匹配你设置的
evenodd填充规则)。
内容的提问来源于stack exchange,提问作者umrpedrod
相关产品推荐
相关产品推荐

