ggspatial::geom_spatial_path()绘图异常,speed_limit图多出一条线
问题原因与解决方案
你的问题出在分组逻辑上:使用geom_spatial_path时,若仅映射连续型变量(如speed_limit)作为颜色,ggplot会自动调整分组规则,导致不同LINESTRING的顶点被错误连接,产生额外的线。而road_name是离散型变量,每个值对应唯一的原始线,分组逻辑自然正确。
具体解决步骤
在geom_spatial_path的aes中显式指定group = feature,强制按原始LINESTRING的特征分组,确保每条线独立绘制:
修改后的p2代码:
p2 <- ggplot2::ggplot(sp_df, aes(x,y)) + ggspatial::geom_spatial_path(aes(color = speed_limit, group = feature)) + ggspatial::coord_sf(crs = 4326) + xlab("lon") + ylab("lat") + ggtitle("speed_limit")
补充说明
ggspatial::df_spatial()会为每个原始LINESTRING生成唯一的feature列,用来标识哪些顶点属于同一条线。当映射连续型变量作为颜色时,ggplot默认的分组逻辑会忽略这个feature标识,转而尝试按颜色变量聚合,从而引发错误连接。显式指定group = feature就能强制恢复正确的分组方式,和基础plot()的逻辑保持一致。
内容的提问来源于stack exchange,提问作者Bezzus
相关产品推荐
相关产品推荐

