模块文档

igraph 中默认图绘制器的辅助类。

本模块包含大量的元类魔法。如果您不理解这些类的逻辑,那么您可能也不需要它们。

igraph 的默认图绘制器使用各种数据源来确定顶点和边的视觉外观。这些数据源按优先级顺序如下:

  • 传递给 igraph.plot() 函数(或者实际上是 igraph.Graph.__plot__(),因为 igraph.plot() 只是将这些属性传递下去)的关键字参数。例如,一个名为vertex_label的关键字参数可用于设置顶点的标签。
  • 正在绘制的顶点/边的属性。例如,具有以下属性的顶点:label在默认图绘制器绘制时将使用该标签。
  • igraph 的全局配置。例如,如果全局 igraph.config.Configuration 实例有一个名为plotting.vertex_color的键,它将被用作顶点的默认颜色。
  • 如果所有其他方法都失败了,则存在一个内置的默认值;例如,默认的顶点颜色是"red"。这是在源代码中硬编码的。

上述逻辑在其他图绘制器中也可能有用,而不仅仅是默认绘制器,因此它被重构到本模块中的类中。不同的图绘制器可能会检查不同的顶点或边属性,因此,从各种数据源收集属性的类是在运行时使用一个名为 AttributeCollectorMeta 的元类生成的。您无需直接使用 AttributeCollectorMeta,只需实现 AttributeCollectorBase 的一个子类,它将确保使用适当的元类。通过 AttributeCollectorBase,您可以使用简单的声明式语法来指定您感兴趣的属性。例如:

    class VisualEdgeBuilder(AttributeCollectorBase):
        arrow_size = 1.0
        arrow_width = 1.0
        color = ("black", palette.get)
        width = 1.0

    for edge in VisualEdgeBuilder(graph.es):
        print edge.color

上述类是一个可视化边构建器——一个在构造时指定图边视觉属性的类。它指定我们感兴趣的属性是:arrow_size, arrow_width, colorwidth;默认值也已给出。对于color,我们还指定应在每个属性值上调用名为 {palette.get} 的方法,以将颜色名称转换为 RGB 值。对于其他三个属性,float将隐式地在所有属性值上调用,这是从默认值本身的类型推断出来的。

另请参阅
AttributeCollectorMeta, AttributeCollectorBase
AttributeCollectorBase 属性收集器子类的基类。继承此类的类可以使用声明式语法来指定它们打算收集哪些顶点或边属性。请参阅 AttributeCollectorMeta...
AttributeCollectorMeta 属性收集器类的元类
AttributeSpecification 描述如何检索给定属性值的类。