如果您从 R 中使用 igraph,请使用此选项
graph_from_literal {igraph} | R 文档 |
如果您想快速创建一个(命名的)小型图,此函数非常有用,它适用于有向图和无向图。
graph_from_literal(..., simplify = TRUE)
from_literal(...)
... |
对于 |
simplify |
逻辑标量,是否在创建的图上调用 |
graph_from_literal
对于快速创建小型图非常方便。 您需要提供一个或多个 R 表达式,给出图的结构。 这些表达式由顶点名称和边运算符组成。 边运算符是 ‘-
’ 和 ‘+
’ 字符的序列,前者用于边,后者用于箭头。 边可以任意长,即您可以根据需要使用任意数量的 ‘-
’ 字符来“绘制”它们。
如果所有边运算符仅由 ‘-
’ 字符组成,则该图将是无向图,而单个 ‘+
’ 字符表示有向图。
让我们看一些简单的例子。 如果没有参数,该函数将创建一个空图
graph_from_literal()
一个简单的无向图,带有两个名为 “A” 和 “B” 的顶点,并且只有一条边
graph_from_literal(A-B)
请记住,边的长度无关紧要,因此我们可以编写以下内容,这将创建相同的图
graph_from_literal( A-----B )
如果图中有很多断开连接的组件,请用逗号分隔它们。 您还可以给出孤立的顶点。
graph_from_literal( A--B, C--D, E--F, G--H, I, J, K )
‘:
’ 运算符可用于定义顶点集。 如果边运算符连接两个顶点集,则第一个集合中的每个顶点将连接到第二个集合中的每个顶点。 以下形式创建一个完整的图,包括循环边
graph_from_literal( A:B:C:D -- A:B:C:D )
在有向图中,只有当边运算符在边的末尾包含箭头(“+”)时,才会创建边
graph_from_literal( A -+ B -+ C ) graph_from_literal( A +- B -+ C ) graph_from_literal( A +- B -- C )
因此,在第三个示例中,顶点 B
和 C
之间没有创建边。
也可以使用简单的边运算符创建互边
graph_from_literal( A +-+ B +---+ C ++ D + E)
再次注意,边运算符的长度是任意的,“+
”、“++
” 和 “+-----+
” 具有完全相同的含义。
如果顶点名称包含空格或其他特殊字符,则需要引用它们
graph_from_literal( "this is" +- "a silly" -+ "graph here" )
您可以通过这种方式在顶点名称中包含任何字符,甚至包括 ‘+’ 和 ‘-’ 字符。
请参阅下面的更多示例。
一个 igraph 图
其他确定性构造函数:graph_from_atlas()
, graph_from_edgelist()
, make_chordal_ring()
, make_empty_graph()
, make_full_citation_graph()
, make_full_graph()
, make_graph()
, make_lattice()
, make_ring()
, make_star()
, make_tree()
# A simple undirected graph
g <- graph_from_literal( Alice-Bob-Cecil-Alice, Daniel-Cecil-Eugene,
Cecil-Gordon )
g
# Another undirected graph, ":" notation
g2 <- graph_from_literal( Alice-Bob:Cecil:Daniel, Cecil:Daniel-Eugene:Gordon )
g2
# A directed graph
g3 <- graph_from_literal( Alice +-+ Bob --+ Cecil +-- Daniel,
Eugene --+ Gordon:Helen )
g3
# A graph with isolate vertices
g4 <- graph_from_literal( Alice -- Bob -- Daniel, Cecil:Gordon, Helen )
g4
V(g4)$name
# "Arrows" can be arbitrarily long
g5 <- graph_from_literal( Alice +---------+ Bob )
g5
# Special vertex names
g6 <- graph_from_literal( "+" -- "-", "*" -- "/", "%%" -- "%/%" )
g6