gpt4 book ai didi

r - igraph R中的顶点标签

转载 作者:行者123 更新时间:2023-12-04 11:13:45 25 4
gpt4 key购买 nike

我正在使用 igraph 绘制非定向力网络。

我有一个 nodeslinks 的数据框,如下所示:

> links
source target value sourceID targetID
1 3 4 0.6245 1450552 1519842
2 6 8 0.5723 2607133 3051992
3 9 7 0.7150 3101536 3025831
4 0 1 0.7695 401517 425784
5 2 5 0.5535 1045501 2258363

> nodes
name group size
1 401517 1 8
2 425784 1 8
3 1045501 1 8
4 1450552 1 8
5 1519842 1 8
6 2258363 1 8
7 2607133 1 8
8 3025831 1 8
9 3051992 1 8
10 3101536 1 8

我使用 igraph 绘制这些如下:
gg <- graph.data.frame(links,directed=FALSE)
plot(gg, vertex.color = 'lightblue', edge.label=links$value, vertex.size=1, edge.color="darkgreen",
vertex.label.font=1, edge.label.font =1, edge.label.cex = 1,
vertex.label.cex = 2 )

enter image description here

在这个图上,igraph 使用了 sourcetarget 的代理索引作为顶点标签。

我想在我的 links 表中使用真实 ID,表示为 sourceIDtargetID

因此对于:
  source target  value sourceID targetID
1 3 4 0.6245 1450552 1519842

这将显示为:
(1450552) ----- 0.6245 ----- (1519842)

代替:
      (3) ----- 0.6245 ----- (4)

(请注意,代理索引在 links 数据帧中索引为零,而在 nodes 数据帧中索引为 1。这个偏移 1 对于 igraph 绘图是必需的)。

我知道我需要以某种方式将 matchmap 代理索引转换为 name 数据帧中相应的 nodes。但是,我不知所措,因为我不知道 igraph 绘制标签的顺序。

我怎样才能做到这一点?

我咨询了以下问题无济于事:

Vertex Labels in igraph with R
how to specify the labels of vertices in R
R igraph rename vertices

最佳答案

您可以像这样指定标签:

 library(igraph)
gg <- graph.data.frame(
links,directed=FALSE,
vertices = rbind(
setNames(links[,c(1,4)],c("id","label")),
setNames(links[,c(2,5)], c("id","label"))))
plot(gg, vertex.color = 'lightblue', edge.label=links$value,
vertex.size=1, edge.color="darkgreen",
vertex.label.font=1, edge.label.font =1, edge.label.cex = 1,
vertex.label.cex = 2 )

enter image description here

你也可以通过
merge(rbind(
setNames(links[,c(1,4)],c("id","label")),
setNames(links[,c(2,5)], c("id","label"))),
nodes,
by.x="label", by.y="name")

如果您需要其他节点属性,请添加到 vertices 参数。

数据:
 links <- read.table(header=T, text="
source target value sourceID targetID
1 3 4 0.6245 1450552 1519842
2 6 8 0.5723 2607133 3051992
3 9 7 0.7150 3101536 3025831
4 0 1 0.7695 401517 425784
5 2 5 0.5535 1045501 2258363")

nodes <- read.table(header=T, text="
name group size
1 401517 1 8
2 425784 1 8
3 1045501 1 8
4 1450552 1 8
5 1519842 1 8
6 2258363 1 8
7 2607133 1 8
8 3025831 1 8
9 3051992 1 8
10 3101536 1 8")

关于r - igraph R中的顶点标签,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44066477/

25 4 0