gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 23:44:31 26 4
gpt4 key购买 nike

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

我正在使用 python igraph。

请帮忙

最佳答案

类似这样的事情:

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 变量中,该变量具有相同的输入为 g.es(即 EdgeSeq)。

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

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

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

g.es["color"] = ["red" if (edge.source in vertex_set and \
edge.target in vertex_set) else "black" \
for edge in g.es]

关于python - 我可以在 IGraph-Python 中更改包含特定顶点的边的颜色吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10067721/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com