从邻接矩阵开始时如何添加顶点/节点信息?
How do you add vertice / node information when starting from adjacency matrix?
这似乎是一件很简单的事情,但我想不通。
我创建了一个邻接矩阵,指定了哪些节点连接到哪个节点,这是一个有向图。
A B C D
A 0 1 0 1
B 0 0 0 0
C 1 0 0 0
D 1 0 1 0
我可以用
graph_from_adjacency_matrix(matrix)
我还有一个数据框,其中包含每个节点的规格
f.i.
data.frame(id = c("A", "B","C","D"),
color = c("red","red", "green","deathmetal black"),
shoesize = c(31,32,33,50))
如何将这些信息合并到 1 个图表中以进行绘图?
您可以合并节点属性值 set_vertex_attr
如果你有
matrix <- structure(c(0L, 0L, 1L, 1L, 1L, 0L, 0L, 0L, 0L, 0L, 0L, 1L, 1L,
0L, 0L, 0L), .Dim = c(4L, 4L), .Dimnames = list(c("A", "B", "C",
"D"), c("A", "B", "C", "D")))
gg <- graph_from_adjacency_matrix(matrix)
那你可以
data.frame(id = c("A", "B","C","D"),
color = c("red", "red", "green", "deathmetal black"),
shoesize = c(31,32,33,50), stringsAsFactors=FALSE)
gg <- set_vertex_attr(gg, "color", dd$id, dd$color)
gg <- set_vertex_attr(gg, "shoesize", dd$id, dd$shoesize)
使用 tidygraph 包的方法略有不同:
as_tbl_graph(matrix) %>% left_join(data, by=c('name'='id'))
根据 Thomas Lin Pederson(tidygraph 的创建者)的说法。
这似乎是一件很简单的事情,但我想不通。 我创建了一个邻接矩阵,指定了哪些节点连接到哪个节点,这是一个有向图。
A B C D
A 0 1 0 1
B 0 0 0 0
C 1 0 0 0
D 1 0 1 0
我可以用
graph_from_adjacency_matrix(matrix)
我还有一个数据框,其中包含每个节点的规格 f.i.
data.frame(id = c("A", "B","C","D"),
color = c("red","red", "green","deathmetal black"),
shoesize = c(31,32,33,50))
如何将这些信息合并到 1 个图表中以进行绘图?
您可以合并节点属性值 set_vertex_attr
如果你有
matrix <- structure(c(0L, 0L, 1L, 1L, 1L, 0L, 0L, 0L, 0L, 0L, 0L, 1L, 1L,
0L, 0L, 0L), .Dim = c(4L, 4L), .Dimnames = list(c("A", "B", "C",
"D"), c("A", "B", "C", "D")))
gg <- graph_from_adjacency_matrix(matrix)
那你可以
data.frame(id = c("A", "B","C","D"),
color = c("red", "red", "green", "deathmetal black"),
shoesize = c(31,32,33,50), stringsAsFactors=FALSE)
gg <- set_vertex_attr(gg, "color", dd$id, dd$color)
gg <- set_vertex_attr(gg, "shoesize", dd$id, dd$shoesize)
使用 tidygraph 包的方法略有不同:
as_tbl_graph(matrix) %>% left_join(data, by=c('name'='id'))
根据 Thomas Lin Pederson(tidygraph 的创建者)的说法。