如果您从 R 中使用 igraph,请使用此选项
+.igraph {igraph} | R 文档 |
向图中添加顶点、边或另一个图
## S3 method for class 'igraph'
e1 + e2
e1 |
第一个参数,可能是一个 igraph 图,但请参见下面的详细信息。 |
e2 |
第二个参数,请参见下面的详细信息。 |
加号运算符可用于向图中添加顶点或边。实际执行的操作取决于右侧参数的类型。
如果它也是一个 igraph 图对象,并且它们都是命名图,则计算两个图的并集,请参见 union
。
如果它也是一个 igraph 图对象,但两者都不是命名图,则计算两个图的不相交并集,请参见 disjoint_union
。
如果它是一个数字标量,则将指定数量的顶点添加到图中。
如果它是一个字符标量或向量,则将其解释为要添加到图中的顶点的名称。
如果它是一个使用 vertex
或 vertices
函数创建的对象,则会将新顶点添加到图中。 当您要添加一些顶点属性时,此形式是合适的。 vertices
函数的操作数指定要添加的顶点数以及它们的属性。
vertices
的未命名参数被连接并用作 “name
” 顶点属性(即顶点名称),命名参数将作为额外的顶点属性添加。 例子
g <- g + vertex(shape="circle", color= "red") g <- g + vertex("foo", color="blue") g <- g + vertex("bar", "foobar") g <- g + vertices("bar2", "foobar2", color=1:2, shape="rectangle")
vertex
只是 vertices
的别名,为了可读性而提供。 如果将单个顶点添加到图中,则用户应使用它。
如果它是一个使用 edge
或 edges
函数创建的对象,则会将新边添加到图中。 新边以及它们的属性可以指定为 edges
函数的参数。
edges
的未命名参数被连接并用作新边的端点的顶点 ID。 命名参数将作为边属性添加。
示例
g <- make_empty_graph() + vertices(letters[1:10]) + vertices("foo", "bar", "bar2", "foobar2") g <- g + edge("a", "b") g <- g + edges("foo", "bar", "bar2", "foobar2") g <- g + edges(c("bar", "foo", "foobar2", "bar2"), color="red", weight=1:2)
请参见下面的更多示例。
edge
只是 edges
的别名,为了可读性而提供。 如果将单个边添加到图中,则用户应使用它。
如果它是一个使用 path
函数创建的对象,则会添加形成路径的新边。 边以及它们的属性被指定为 path
函数的参数。 非命名参数被连接并解释为沿路径的顶点 ID。 其余参数将作为边属性添加。
示例
g <- make_empty_graph() + vertices(letters[1:10]) g <- g + path("a", "b", "c", "d") g <- g + path("e", "f", "g", weight=1:2, color="red") g <- g + path(c("f", "c", "j", "d"), width=1:3, color="green")
重要的是要注意,尽管加号运算符是可交换的,即可写
graph <- "foo" + make_empty_graph()
但它不是结合律的,例如
graph <- "foo" + "bar" + make_empty_graph()
导致语法错误,除非使用括号
graph <- "foo" + ( "bar" + make_empty_graph() )
为了清晰起见,我们建议始终将图对象放在运算符的左侧
graph <- make_empty_graph() + "foo" + "bar"
用于操作图结构的其他函数:add_edges()
, add_vertices()
, delete_edges()
, delete_vertices()
, edge()
, igraph-minus
, path()
, vertex()
# 10 vertices named a,b,c,... and no edges
g <- make_empty_graph() + vertices(letters[1:10])
# Add edges to make it a ring
g <- g + path(letters[1:10], letters[1], color = "grey")
# Add some extra random edges
g <- g + edges(sample(V(g), 10, replace = TRUE), color = "red")
g$layout <- layout_in_circle
plot(g)