树状图中的连接节点数
Number of Connected Nodes in a dendrogram
最近刚开始使用 tidygraph 和 ggraph 包,遇到一个相对简单的问题,但奇怪的是,似乎找不到简单的解决方案。在一个网络中,有多少节点是从一个父节点向下连接的?似乎是一个相当简单的问题,但一直难以得出答案,尤其是当有多个“parent/child”关系需要展开时。
# reproducible example -----------------
library(tidygraph)
library(ggraph)
library(tidyverse)
parent_child <- tribble(
~parent, ~child,
"a", "b",
"b", "c",
"b", "d",
"d", "e",
"d", "f",
"d", "g",
"g", "z"
)
# converted to a dendrogram ------------
parent_child %>%
as_tbl_graph() %>%
ggraph(layout = "dendrogram") +
geom_node_point() +
geom_node_text(aes(label = name),
vjust = -1,
hjust = -1) +
geom_edge_elbow()
这个结果是网络
我想知道的;移动out/down(忽略节点“a”)时有多少节点连接到点“b”?我期望的答案是 6,或者,包括“b”,然后是 7。
我 运行 这个网络有大约 5000 个人,因此按名称过滤单个节点并不是一个很好的解决方案。我办公室里没有其他人熟悉网络分析,所以我只能自己解决这个问题。真心希望有高人指点!同时将继续审查问题和可能的解决方案:) 谢谢大家!
一种方法是使用 igraph
包中的 ego_size()
。它需要一个 order
参数,但您可以使用边数来捕获邻域的最大可能顺序。
library(igraph)
g <- graph_from_data_frame(parent_child)
ego_size(g, order = ecount(g), nodes = "b", mode = "out", mindist = 1)
[1] 6
对于多个节点,只需传递一个感兴趣节点的向量:
ego_size(g, order = ecount(g), nodes = c("b", "d", "g"), mode = "out", mindist = 1)
[1] 6 4 1
最近刚开始使用 tidygraph 和 ggraph 包,遇到一个相对简单的问题,但奇怪的是,似乎找不到简单的解决方案。在一个网络中,有多少节点是从一个父节点向下连接的?似乎是一个相当简单的问题,但一直难以得出答案,尤其是当有多个“parent/child”关系需要展开时。
# reproducible example -----------------
library(tidygraph)
library(ggraph)
library(tidyverse)
parent_child <- tribble(
~parent, ~child,
"a", "b",
"b", "c",
"b", "d",
"d", "e",
"d", "f",
"d", "g",
"g", "z"
)
# converted to a dendrogram ------------
parent_child %>%
as_tbl_graph() %>%
ggraph(layout = "dendrogram") +
geom_node_point() +
geom_node_text(aes(label = name),
vjust = -1,
hjust = -1) +
geom_edge_elbow()
这个结果是网络
我想知道的;移动out/down(忽略节点“a”)时有多少节点连接到点“b”?我期望的答案是 6,或者,包括“b”,然后是 7。
我 运行 这个网络有大约 5000 个人,因此按名称过滤单个节点并不是一个很好的解决方案。我办公室里没有其他人熟悉网络分析,所以我只能自己解决这个问题。真心希望有高人指点!同时将继续审查问题和可能的解决方案:) 谢谢大家!
一种方法是使用 igraph
包中的 ego_size()
。它需要一个 order
参数,但您可以使用边数来捕获邻域的最大可能顺序。
library(igraph)
g <- graph_from_data_frame(parent_child)
ego_size(g, order = ecount(g), nodes = "b", mode = "out", mindist = 1)
[1] 6
对于多个节点,只需传递一个感兴趣节点的向量:
ego_size(g, order = ecount(g), nodes = c("b", "d", "g"), mode = "out", mindist = 1)
[1] 6 4 1