Gephi和R中的介数分析
Analysis of betweenness in Gephi and R
我正在尝试从介数的角度分析网络(悲惨世界)。
一张网是:
graph
[
node
[
id 0
label "Myriel"
maincharacter 0
]
node
[
id 1
label "Napoleon"
maincharacter 0
]
node
[
id 2
label "MlleBaptistine"
maincharacter 0
]
node
[
id 3
label "MmeMagloire"
maincharacter 0
]
node
[
id 4
label "CountessDeLo"
maincharacter 0
]
node
[
id 5
label "Geborand"
maincharacter 0
]
node
[
id 6
label "Champtercier"
maincharacter 0
]
node
[
id 7
label "Cravatte"
maincharacter 0
]
node
[
id 8
label "Count"
maincharacter 0
]
node
[
id 9
label "OldMan"
maincharacter 0
]
node
[
id 10
label "Labarre"
maincharacter 0
]
node
[
id 11
label "Valjean"
maincharacter 1
]
node
[
id 12
label "Marguerite"
maincharacter 0
]
node
[
id 13
label "MmeDeR"
maincharacter 0
]
node
[
id 14
label "Isabeau"
maincharacter 0
]
...
我在 Gephi 中打开网络,并使用 "centrality Betweenness" 属性制作了更大的节点。
这样做我得到 id 11 的节点是具有更大介数的节点。
然后我尝试在 R 中做同样的事情。
所以我 运行 这些命令:
> net <- read.graph("./dataset/lesmiserables.gml", format = c("gml"))
> bet <- betweenness(net, normalized = TRUE)
> print(bet)
[1] 0.1768421053 0.0000000000 0.0000000000 0.0000000000 0.0000000000 0.0000000000 0.0000000000 0.0000000000
[9] 0.0000000000 0.0000000000 0.0000000000 0.5699890528 0.0000000000 0.0000000000 0.0000000000 0.0000000000
[17] 0.0406293482 0.0000000000 0.0000000000 0.0000000000 0.0000000000 0.0000000000 0.0000000000 0.1296445410
[25] 0.0290024187 0.0749012212 0.0237962535 0.0543315597 0.0264912281 0.0080409357 0.0000000000 0.0086402950
[33] 0.0000000000 0.0000000000 0.0000000000 0.0000000000 0.0000000000 0.0000000000 0.0000000000 0.0069254386
[41] 0.0000000000 0.0114875507 0.0000000000 0.0000000000 0.0000000000 0.0000000000 0.0000000000 0.0263157895
[49] 0.1651125024 0.0202106216 0.0002172097 0.0475989279 0.0003508772 0.0000000000 0.0000000000 0.1320324886
[57] 0.0000000000 0.0276612364 0.0425533568 0.0012501456 0.0000000000 0.0012501456 0.0052670299 0.0021854883
[65] 0.0307536502 0.0021854883 0.0001503759 0.0000000000 0.0049603840 0.0049603840 0.0048618042 0.0038738299
[73] 0.0000000000 0.0000000000 0.0000000000 0.0004385965 0.0000000000
> max(bet)
[1] 0.5699891
> betValjean <- betweenness(net, v = 11, normalized = TRUE)
> print(betValjean)
[1] 0
为什么在Gephi中介数最高的节点是id为11的节点,而在R中介数最高的节点是id为12的节点?[=12=]
为什么在 R 中,id 为 11 的节点的介数 = 0?
我不明白我哪里错了..
谢谢大家
您的问题是,当您阅读 igraph
中的图表时,顶点的 ID 不一定对应于您文件中的 ID。你没有具体说明你是如何阅读 R 中的信息的,但假设你已经做了这样的事情,
net <- read.graph("lesmiserables.gml", format="gml")
并且假设我在 google 中找到了与您相同的文件,实际上当我计算节点 11 的介数时我没有得到预期的结果,
> betValjean <- betweenness(net, v = 11, normalized = TRUE)
> betValjean
[1] 0
但是节点 11 不是冉阿让,
> get.vertex.attribute(net, "label", 11)
[1] "Labarre"
你可以这样得到你想要的节点,
> V(net)[label == "Valjean"]
+ 1/77 vertex:
[1] 12
然后是这 3 种方式中任何一种的介数:
> betweenness(net, v =V(net)[label == "Valjean"], normalized = TRUE)
[1] 0.5699891
> betweenness(net, v = V(net)[id == 11], normalized = TRUE)
[1] 0.5699891
> betweenness(net, v = 12, normalized = TRUE)
[1] 0.5699891
希望对您有所帮助。
我正在尝试从介数的角度分析网络(悲惨世界)。
一张网是:
graph
[
node
[
id 0
label "Myriel"
maincharacter 0
]
node
[
id 1
label "Napoleon"
maincharacter 0
]
node
[
id 2
label "MlleBaptistine"
maincharacter 0
]
node
[
id 3
label "MmeMagloire"
maincharacter 0
]
node
[
id 4
label "CountessDeLo"
maincharacter 0
]
node
[
id 5
label "Geborand"
maincharacter 0
]
node
[
id 6
label "Champtercier"
maincharacter 0
]
node
[
id 7
label "Cravatte"
maincharacter 0
]
node
[
id 8
label "Count"
maincharacter 0
]
node
[
id 9
label "OldMan"
maincharacter 0
]
node
[
id 10
label "Labarre"
maincharacter 0
]
node
[
id 11
label "Valjean"
maincharacter 1
]
node
[
id 12
label "Marguerite"
maincharacter 0
]
node
[
id 13
label "MmeDeR"
maincharacter 0
]
node
[
id 14
label "Isabeau"
maincharacter 0
]
...
我在 Gephi 中打开网络,并使用 "centrality Betweenness" 属性制作了更大的节点。 这样做我得到 id 11 的节点是具有更大介数的节点。
然后我尝试在 R 中做同样的事情。 所以我 运行 这些命令:
> net <- read.graph("./dataset/lesmiserables.gml", format = c("gml"))
> bet <- betweenness(net, normalized = TRUE)
> print(bet)
[1] 0.1768421053 0.0000000000 0.0000000000 0.0000000000 0.0000000000 0.0000000000 0.0000000000 0.0000000000
[9] 0.0000000000 0.0000000000 0.0000000000 0.5699890528 0.0000000000 0.0000000000 0.0000000000 0.0000000000
[17] 0.0406293482 0.0000000000 0.0000000000 0.0000000000 0.0000000000 0.0000000000 0.0000000000 0.1296445410
[25] 0.0290024187 0.0749012212 0.0237962535 0.0543315597 0.0264912281 0.0080409357 0.0000000000 0.0086402950
[33] 0.0000000000 0.0000000000 0.0000000000 0.0000000000 0.0000000000 0.0000000000 0.0000000000 0.0069254386
[41] 0.0000000000 0.0114875507 0.0000000000 0.0000000000 0.0000000000 0.0000000000 0.0000000000 0.0263157895
[49] 0.1651125024 0.0202106216 0.0002172097 0.0475989279 0.0003508772 0.0000000000 0.0000000000 0.1320324886
[57] 0.0000000000 0.0276612364 0.0425533568 0.0012501456 0.0000000000 0.0012501456 0.0052670299 0.0021854883
[65] 0.0307536502 0.0021854883 0.0001503759 0.0000000000 0.0049603840 0.0049603840 0.0048618042 0.0038738299
[73] 0.0000000000 0.0000000000 0.0000000000 0.0004385965 0.0000000000
> max(bet)
[1] 0.5699891
> betValjean <- betweenness(net, v = 11, normalized = TRUE)
> print(betValjean)
[1] 0
为什么在Gephi中介数最高的节点是id为11的节点,而在R中介数最高的节点是id为12的节点?[=12=]
为什么在 R 中,id 为 11 的节点的介数 = 0?
我不明白我哪里错了..
谢谢大家
您的问题是,当您阅读 igraph
中的图表时,顶点的 ID 不一定对应于您文件中的 ID。你没有具体说明你是如何阅读 R 中的信息的,但假设你已经做了这样的事情,
net <- read.graph("lesmiserables.gml", format="gml")
并且假设我在 google 中找到了与您相同的文件,实际上当我计算节点 11 的介数时我没有得到预期的结果,
> betValjean <- betweenness(net, v = 11, normalized = TRUE)
> betValjean
[1] 0
但是节点 11 不是冉阿让,
> get.vertex.attribute(net, "label", 11)
[1] "Labarre"
你可以这样得到你想要的节点,
> V(net)[label == "Valjean"]
+ 1/77 vertex:
[1] 12
然后是这 3 种方式中任何一种的介数:
> betweenness(net, v =V(net)[label == "Valjean"], normalized = TRUE)
[1] 0.5699891
> betweenness(net, v = V(net)[id == 11], normalized = TRUE)
[1] 0.5699891
> betweenness(net, v = 12, normalized = TRUE)
[1] 0.5699891
希望对您有所帮助。