igraph重命名顶点

12

是否有重命名igraph中顶点的可能性?我想在顶点上用不同的符号多次绘制某个图。给定以下igraph az:

> az
IGRAPH DN-- 24 23 -- 
+ attr: name (v/c), label (v/c), color (v/c), fill (v/c), width (e/n)

随着

> V(az)
Vertex sequence:
 [1] "x1"  "x2"  "x3"  "x4"  "x5"  "x7"  "x8"  "x9"  "x10" "x11" "x12" "x13"
[13] "x14" "x15" "x16" "x19" "x20" "x21" "x22" "x23" "x24" "x25" "x26" "x27"

我想将顶点更改为,假设为y1-y27。 然而,

V(az)$name <- paste("y",1:27,sep="")

我的方法不起作用。我该如何实现它? 提前致谢。

谢谢。

编辑: 供参考记录。

V(az)$name <- paste("y",1:27,sep="")

它以这种方式工作,以便返回:

 > V(az)
    Vertex sequence:
     [1] "y1"  "y2"  "y3"  "y4"  "y5"  "y7"  "y8"  "y9"  "y10" "y11" "y12" "y13"
    [13] "y14" "y15" "y16" "y19" "y20" "y21" "y22" "y23" "y24" "y25" "y26" "y27"

然而,plot(az) 仍然返回带有 x 节点的图形。


你写的是 V(as) 而不是 V(az),这正常吗? - dickoa
噢,谢谢你的提示。那是一个打错字。它应该是 V(az)$name <- paste("y",1:27,sep="")。 - Richard A. Schäfer
你怎么知道它不起作用?有错误信息吗? - dickoa
刚刚编辑了问题。 - Richard A. Schäfer
我明白,但我相信那个情节也会起作用。再检查一下。没有理由。 - dickoa
V(az)$name是错误的。它必须是V(az)$label。V(az)$label <- paste("y",1:27,sep="")可以正常工作。谢谢。 - Richard A. Schäfer
2个回答

16

您可以使用

ay <- set.vertex.attribute(az, "name", value=paste("y",1:27,sep=""))

也可以使用"label"代替"name"来使用。


这是一种很好的设置标签的方法。非常感谢你。 - Richard A. Schäfer

11

如果V(az)同时拥有一组“name”属性和一组“label”属性,则会绘制“label”属性。

> gt <- graph.tree(24, children = 4, mode=c("out", "in", "undirected"))
> V(gt)$name <- letters[1:24]
> plot(gt)   # So 'name's get displayed if no label is present
> V(gt)$label <- LETTERS[1:24]
> plot(gt)    # Labels get displayed
> V(gt)$name <- letters[1:24]  # see if then get overwritten 
> plot(gt)    # Still plots with 'label's

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接