如何解决如何在 R 中的矢量图上绘制 igraph 对象
我使用 igraph
和 sf
包。
我有一个 igraph 对象,其顶点具有空间坐标 geo_dist_graph
。
顶点名称和坐标如下所示:
grid_grid <-
structure(list(coords.x1 = c(15.504078,15.704078,15.904078,15.104078,15.304078,15.504078,14.904078,14.304078,13.904078,14.704078,13.704078,14.104078,14.304078),coords.x2 = c(43.835623,43.835623,44.035623,44.235623,44.435623,44.635623,44.835623,45.035623,45.235623,45.435623,45.435623),g9.nodes = c(27,28,29,40,41,42,43,55,56,58,69,81,94,98,108,110,113,114,123,124,128,138,139,141)),class = "data.frame",row.names = c("1","2","3","4","5","6","7","8","9","10","11","12","13","14","15","16","17","18","19","20","21","22","23","24"
))
该图来自一个简单的平方邻接矩阵:
geo_dist_graph <-
structure(c(NA,1,NA,NA),.Dim = c(24L,24L))
colnames(geo_dist_graph) <- grid_grid$g9.nodes
row.names(geo_dist_graph) <- grid_grid$g9.nodes
geo_dist_graph <- graph_from_adjacency_matrix(geo_dist_graph,mode = "upper",diag = F)
以这种方式附加的空间坐标:
V(geo_dist_graph)$x <-
grid_grid$coords.x1[match(V(geo_dist_graph)$name,grid_grid$g9.nodes)]
V(geo_dist_graph)$y <-
grid_grid$coords.x2[match(V(geo_dist_graph)$name,grid_grid$g9.nodes)]
使用 plot
函数时,图形在空间中绘制是正确的。但是当我尝试添加像 plot(map_crop_sp,add = T)
这样的底图时,地图没有显示在图表后面,但没有错误消息。
地图是矢量图,不知道重要不重要。这是用于创建它的代码。
map <- st_read("ne_10m_coastline/ne_10m_coastline.shp")
map_crop <- st_crop(map,xmin = 13.304078,ymin = 43.635623,xmax = 16.503846,ymax = 45.60185)
map_crop_sp <- as(map_crop,Class = "Spatial")
解决方法
回答
由于 igraph
应该在地图的顶部,我将其绘制在第二个位置。我还添加了 rescale = F
:
plot(map_crop_sp)
plot(geo_dist_graph,add = T,rescale = F)
基本原理
我输入了 ?plot.igraph
。从那里,我找到了 ?igraph.plotting
。似乎绘制一个 igraph
对象会重新缩放它 (plot(...,rescale = TRUE)
:
逻辑常量,是否将坐标重新缩放到[-1,1]x-1,1区间。 tkplot 未实现此参数。
默认为 TRUE,布局将被重新缩放。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。