模块文档
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, color和width;还给出了默认值。对于color,我们还指定应该在每个属性值上调用名为 {palette.get} 的方法,以将颜色名称转换为 RGB 值。对于其他三个属性,float将隐式地在所有属性值上调用,这是从默认值本身的类型推断出来的。
参见 | |
AttributeCollectorMeta, AttributeCollectorBase |
类 |
|
属性收集器子类的基类。继承此类的类可以使用声明性语法来指定它们打算收集的顶点或边属性。请参阅 AttributeCollectorMeta ... |
类 |
|
属性收集器类的元类 |
类 |
|
描述应如何检索给定属性的值的类。 |