python-igraph API 参考

python-igraph 中所有类、函数和方法的列表

模块文档

igraph.Graph.Formula() 的实现。

只有在你有非常充分的理由这样做时,才应该直接使用此模块。在几乎所有情况下,最好调用 igraph.Graph.Formula()

函数 construct_graph_from_formula Graph.Formula(formula = None, attr = "name", simplify = True)
函数 generate_edges 从给定公式部分的头部解析边规范,并产生以下结果
def construct_graph_from_formula(cls, formula=None, attr='name', simplify=True):

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是否简化构造的图
返回值
构造的图
def generate_edges(formula):

从给定公式部分的头部解析边规范,并产生以下结果

  • 按顶点名称排列的边的起点
  • 按名称排列的边的终点,如果顶点是孤立的,则为空列表
  • 一对布尔值,用于表示我们在开始和结束顶点处是否有箭头