r - 如何使用预定义的顶点 ID 创建 igraph?
问题描述
我有顶点的id's
和坐标。(x,y)
边缘列表el
也是已知的。我需要创建一个空间图。
我的尝试如下:
library(igraph)
id <- c(106, 110, 107, 102, 104, 103, 108, 111, 109, 101)
cx <- c(270.2798, 156.4124, 270.2798, 100.0332, 156.4124, 100.0332, 156.4124, 156.4124, 156.4124, 100.0035)
cy <- c(401.2903, 420.2904, 470.4120, 401.2903, 348.2904, 348.2904, 470.4120, 401.2903, 436.8926, 470.1633)
el <- c(101,102, 102,103, 103,104, 104,111, 111,106,
106,107, 107,108, 108,101, 108,109, 110,111)
dfw <- data.frame(id, cx, cy)
g2 <- make_empty_graph() %>%
add_vertices(nrow(dfw)) %>%
add_edges(el) # error is here
V(g2)$names <- dfw$id
mylayout2 <- as.matrix(cbind(dfw$cx, -dfw$cy))
plot(g2, layout=mylayout2,
vertex.size = 10,
vertex.label = V(g2)$name,
vertex.label.cex=.95,
)
我有错误
Error in add_edges(., el) :
At type_indexededgelist.c:272 : cannot add edges, Invalid vertex id
预期结果是:
问题。如何使用预定义id's
的顶点添加边?
解决方案
首先,要将 101、102 等转换为dfw
我们可以使用的行号match
。二、应该是
V(g2)$name <- dfw$id
代替
V(g2)$names <- dfw$id
所以,我们有
g2 <- make_empty_graph() %>% add_vertices(nrow(dfw)) %>% add_edges(match(el, dfw$id))
V(g2)$name <- dfw$id
mylayout2 <- as.matrix(cbind(dfw$cx, -dfw$cy))
plot(g2, layout = mylayout2,
vertex.size = 10,
vertex.label = V(g2)$name,
vertex.label.cex = .95)
推荐阅读
- c# - xamarin Forms 列表中的内存问题
- rust - 如何从结果中获取值?
- sql - 更改用户密码会导致身份验证失败
- python - 使用 AWS Lambda 自定义调整图像大小
- python - 熊猫使用 lineterminator='\n' 保存到 csv
- java - 在尝试水平扩展连接到 Postgres 的 Spring Boot APP 时面临丢失的更新
- amazon-web-services - AWS 管理员账户,但看不到账单
- php - 如何将 Url 存储在变量中并检查它是否与另一个 url 匹配
- javascript - 如何使用 querySelectorAll 获取 Youtube 频道名称?
- flutter - 溢出的注释文本不对齐