【发布时间】:2017-10-19 08:57:21
【问题描述】:
我正在使用 igraph 绘制一个非定向力网络。
我有一个nodes 和links 的数据框如下:
> 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 )
在此图上,igraph 使用了 source 和 target 的代理索引作为顶点标签。
我想使用真实 ID,在我的 links 表中表示为 sourceID 和 targetID。
所以,对于:
source target value sourceID targetID
1 3 4 0.6245 1450552 1519842
这将显示为:
(1450552) ----- 0.6245 ----- (1519842)
代替:
(3) ----- 0.6245 ----- (4)
(请注意,代理索引在 links 数据帧中索引为零,在 nodes 数据帧中索引为 1。igraph 绘图需要此偏移量 1)。
我知道我需要以某种方式将 match 或 map 代理索引指向 nodes 数据框中相应的 name。但是,我不知所措,因为我不知道 igraph 绘制标签的顺序。
我怎样才能做到这一点?
我已经咨询了以下问题,但无济于事:
Vertex Labels in igraph with R how to specify the labels of vertices in R R igraph rename vertices
【问题讨论】: