我可以在IGraph-Python中更改包含特定顶点的边的颜色

时间:2012-04-09 00:30:43

标签: python igraph

我创建了一个有向图,通过一个程序,我发现它包含的所有周期。创建图形后,我想更改包含循环中涉及的顶点的边的颜色。

我正在使用python igraph。

请帮助

1 个答案:

答案 0 :(得分:3)

这样的事情:

vertex_set = set(vertices_in_cycle)
g.es["color"] = "black"
red_edges = g.es.select(_source_in=vertex_set, _target_in=vertex_set)
red_edges["color"] = "red"

说明:

  1. g.es表示图表中所有边的集合。 (同样,g.vs是所有顶点的集合。)

  2. g.es["color"]可让您为图表中边缘的所有color属性指定值。绘图仪使用此边缘属性来确定边缘应具有的颜色。因此,在第2行中,您将所有边的颜色设置为黑色。 (注意:您也可以使用此处的列表而不是简单的字符串,或者您可以使用HTML颜色表示法来表示自定义颜色)。

  3. 您可以使用g.es作为列表,在这种情况下,您可以获得图表的特定边缘;例如,g.es[2]会给你id = 2的边缘。这里没有使用,但很高兴知道。

  4. g.es.select是一种根据某些条件选择边缘子集的方法。 help(EdgeSeq.select)为您提供有关此内容的更多信息;这里的要点是,在第3行中,您选择了两个端点位于您感兴趣的顶点集中的所有边。所选边存储在red_edges变量中,该变量与{ {1}}(即g.es)。

  5. 在最后一行中,您要将EdgeSeq中所有边缘的颜色设置为red_edges,覆盖您在第2行中设置的黑色。

  6. 请注意,上面的代码不仅会将循环的边缘绘制成红色,还会绘制循环的所有和弦。

    更新:如果上述代码中的第3行由于某种原因不适合您,则可以使用以下代码替换第2行和第3行:

    red