模块文档
只有在你有非常充分的理由这样做时,才应该直接使用此模块。在几乎所有情况下,最好调用 igraph.Graph.Formula()
。
函数 | construct |
Graph.Formula(formula = None, attr = "name", simplify = True) |
函数 | generate |
从给定公式部分的头部解析边规范,并产生以下结果 |
Graph.Formula(formula = None, attr = "name", simplify = True)
从图公式生成图
图公式是图的简单字符串表示形式。它对于快速创建小型图非常方便。该字符串由顶点名称组成,顶点名称之间用边运算符分隔。边运算符是一系列短划线(-),可以以箭头开头(<在序列的开头或>在序列的末尾)。边运算符的长度可以是任意的,也就是说,您可以使用任意数量的短划线来绘制它们。这总共有四个不同的边运算符
- -----创建一个无向边
- <----创建一个有向边,该边从运算符的右侧的顶点指向运算符的左侧的顶点
- ---->与<----
- <--->相反,在两个顶点之间创建互有向边对
如果你只使用无向边运算符(-----),则该图将是无向的。否则它将是有向的。公式中使用的顶点名称将被分配到name图的顶点属性。
一些简单的例子
>>> from igraph import Graph >>> print(Graph.Formula()) # empty graph IGRAPH UN-- 0 0 -- + attr: name (v) >>> g = Graph.Formula("A-B") # undirected graph >>> g.vs["name"] ['A', 'B'] >>> print(g) IGRAPH UN-- 2 1 -- + attr: name (v) + edges (vertex names): A--B >>> g.get_edgelist() [(0, 1)] >>> g2 = Graph.Formula("A-----------B") >>> g2.isomorphic(g) True >>> g = Graph.Formula("A ---> B") # directed graph >>> g.vs["name"] ['A', 'B'] >>> print(g) IGRAPH DN-- 2 1 -- + attr: name (v) + edges (vertex names): A->B
如果你有断开的组件,你可以用逗号分隔它们。你也可以指定孤立的顶点
>>> g = Graph.Formula("A--B, C--D, E--F, G--H, I, J, K") >>> print(", ".join(g.vs["name"])) A, B, C, D, E, F, G, H, I, J, K >>> g.clusters().membership [0, 0, 1, 1, 2, 2, 3, 3, 4, 5, 6]
冒号(:)运算符可用于指定顶点集。如果边运算符连接两个顶点集,则第一个顶点集中的每个顶点都将连接到第二个顶点集中的每个顶点
>>> g = Graph.Formula("A:B:C:D --- E:F:G") >>> g.isomorphic(Graph.Full_Bipartite(4, 3)) True
请注意,如果顶点名称包含空格或特殊字符,则必须用引号引起来
>>> g = Graph.Formula('"this is" +- "a silly" -+ "graph here"') >>> g.vs["name"] ['this is', 'a silly', 'graph here']
参数 | |
cls | 未归档 |
formula | 公式本身 |
attr | 顶点属性的名称,顶点名称将存储在该属性中 |
simplify | 是否简化构造的图 |
返回值 | |
构造的图 |