如何在R语言中将igraph对象叠加绘制在矢量地图上
问题解决办法
该问题的核心原因是igraph默认绘图时会自动将顶点坐标归一化到[-1,1]区间,和底图使用的经纬度坐标体系完全不匹配,叠加的底图会落在绘图区域外,因此看不到内容。你可以按照以下步骤解决:
- 调整绘图顺序,先绘制矢量底图
优先绘制底图可以避免底图被网络元素覆盖,无需将sf对象转为Spatial类,原生sf的plot方法即可直接使用:# 仅绘制底图的几何要素,避免属性色阶干扰 plot(st_geometry(map_crop), col = "gray60") - 关闭igraph坐标自动缩放,叠加空间网络
调用igraph的plot方法时,必须设置rescale = FALSE关闭坐标归一化,同时指定add = TRUE将网络叠加到底图所在的画布上:plot(geo_dist_graph, # 关键参数:关闭坐标自动缩放,使用原始经纬度 rescale = FALSE, # 叠加到现有画布 add = TRUE, # 以下为可选样式调整,可根据需求修改 vertex.size = 4, vertex.color = "coral", edge.color = "steelblue", vertex.label = NA)
额外注意:如果你的顶点坐标和底图使用的坐标系不同(比如一个是WGS84,一个是投影坐标系),还需要先通过
st_transform统一坐标系后再绘图。
内容的提问来源于stack exchange,提问作者Romain
相关产品推荐
相关产品推荐

