2

我正在使用以下代码创建图表:

g <- graph(c(1,1, 1,4, 2,1, 2,2, 3,1, 3,4, 5,1, 5,2))

我想知道如何创建此图表而不必执行以下额外步骤:

delete.vertices(g, 0)

图函数似乎默认为零索引顶点,因此图中存在不与任何其他顶点连接的顶点 0。我可以使用 V(g) 或简单的 summary(g) 来验证这一点,它显示了 6 个顶点,其 id 从 0 到 5。

4

1 回答 1

4

我从 r-forge 站点访问的文档说:“顶点和边在 igraph 中具有数字顶点 ID。顶点 ID 始终是连续的,并且从零开始。” 因此,您需要从该向量中减去 1,然后再将其发送到图形函数。否则,您最终会得到一个未连接的“0”顶点。避免未连接的“0”顶点的一般方法是从向量中减去最小值。

> g <- graph( c(1,1, 1,4, 2,1, 2,2, 3,1, 3,4, 5,1, 5,2) -1)
> g
Vertices: 5 
Edges: 8 
Directed: TRUE 
Edges:

[0] 0 -> 0
[1] 0 -> 3
[2] 1 -> 0
[3] 1 -> 1
[4] 2 -> 0
[5] 2 -> 3
[6] 4 -> 0
[7] 4 -> 1
> g2 <- graph( c(1,1, 1,4, 2,1, 2,2, 3,1, 3,4, 5,1, 5,2) )
> g2 <- delete.vertices(g2, 0)
> g2
Vertices: 5 
Edges: 8 
Directed: TRUE 
Edges:

[0] 0 -> 0
[1] 0 -> 3
[2] 1 -> 0
[3] 1 -> 1
[4] 2 -> 0
[5] 2 -> 3
[6] 4 -> 0
[7] 4 -> 1
> all.equal(g,g2)
[1] TRUE

所以我怀疑你的问题可能真的是“如何使用我自己的规则标记顶点?”。试试这个:

g <- graph( c(1,1, 1,4, 2,1, 2,2, 3,1, 3,4, 5,1, 5,2) -1)
plot(g, vertex.label=1:5)

文档的开头部分还说:

igraph 主页位于http://igraph.sourceforge.net。请特别参阅文档部分。如果您有问题或意见,请加入 igraph-help 邮件列表。

于 2011-09-03T19:28:12.833 回答