igraph
的python接口有一个名为metamagic
的类,用于收集用于打印的图形参数。我正在使用igraph编写一个模块,当我在文档中发现metamagic时,我几乎开始为此编写自己的包装器函数。但是经过搜索和尝试,仍然不清楚如何使用这些类。如果我为边定义一个AttributeCollectorBase
类,如下所示:
class VisEdge(igraph.drawing.metamagic.AttributeCollectorBase):
width = 0.002
color = "#CCCCCC44"
那么,有没有一种简单的方法将所有这些参数传递给igraph.plot()
函数?或者我只能一个接一个地做,像这样:plot(graph,edge_color=VisEdge(graph.es).color)
?
如果我不想用常量参数,而是用自定义函数计算呢?例如,vertex_size
与度成正比。AttributeSpecification
类的func
参数应该这样做,不是吗?但是我还没有看到任何使用它的例子。如果我定义一个AttributeSpecification
实例,如下所示:
ds = igraph.drawing.metamagic.AttributeSpecification(name="vertex_size",alt_name="size",default=2,func='degree')
如何将它传递给AtributeCollector
,最后传递给plot()
?你知道吗
(把事情放在上下文中:我是igraph的Python接口的作者)。你知道吗
我不确定
metamagic
包是否适合您。AttributeCollectorBase
类的唯一目的是允许igraph中的顶点和边抽屉(请参阅igraph.drawing.vertex
和igraph.drawing.edge
包)以一种简洁的方式定义它们能够作为可视属性处理的顶点和边属性(无需输入太多)。因此,例如,如果您查看igraph.drawing.vertex
中的DefaultVertexDrawer
类,您可以看到我通过从AttributeCollectorBase
派生来构造一个VisualVertexBuilder
类,如下所示:稍后,当
DefaultVertexDrawer
在DefaultGraphDrawer
中使用时,我只需按如下方式构造一个VisualVertexBuilder
:其中
graph.vs
是图的顶点序列(因此顶点生成器可以访问顶点属性),而kwds
是传递给plot()
的关键字参数集。变量vertex_builder
允许我通过编写类似vertex_builder[i].color
的内容来检索顶点i
的计算有效的视觉属性;这里,VisualVertexBuilder
的职责是通过查看顶点并检查其color
属性以及查看关键字参数并进行检查来确定有效的颜色是否包含vertex_color
。你知道吗归根结底,
AttributeCollectorBase
类只有在实现自定义图形、顶点或边抽屉并且希望指定要将哪些顶点属性视为可视属性时,才可能对您有用。如果您只想绘制一个图,并从其他数据中导出该图的可视属性,那么AttributeCollectorBase
对您没有任何用处。例如,如果希望顶点的大小与度数成比例,则首选的方法是:或者这个:
如果您有许多可视属性,最好的方法可能是先将它们收集到字典中,然后将该字典传递给
plot()
;例如:有关详细信息,请参阅
rescale
函数的文档。如果要将某些顶点特性映射到顶点的颜色,仍然可以使用rescale
将特性映射到0-255范围,然后将其舍入到最接近的整数,并在打印时使用调色板:相关问题 更多 >
编程相关推荐