python中Igraph图的边缘着色

问题描述

我正在使用 igraph 进行一些边缘着色。我设法完成了绘图教程,并且确实了解了如何进行顶点着色,现在我在为边缘而苦苦挣扎。

到目前为止,我有一个矩阵 M(你可以认为它是经典的列表/np 列表/任何东西),其中的整数对应于一种颜色。 0 表示没有边缘。例如:

M= [[0.0,1,2,3],[1,0.0,3,2],[2,1],[3,0.0]]

我发现了这个:Plot edge labels or similar with Igraph for Python 将矩阵转换为 igraph Graph,它确实有效。现在我想我必须告诉 igraph 为每条边分配哪种颜色,但我没有得到它。

我所做的是将前一个矩阵转换为列表 L 并删除了 0.0。然后我试着复制教程并写了这个:

gKn.es["color_assigned"] = L #gKn is the name of my graph; L is the processed list

visual_style={}
color_dict = {"1.0": "b","2.0": "r","3.0": "g"}

visual_style["edge_color"] = [color_dict[col_num] for col_num in gKn.es["color_assigned"]]    

igraph.plot(gKn,**visual_style)

然后:

  File "XXX/IG_edgeCol_square_graph.py",line 107,in <listcomp>
visual_style["edge_color"] = [color_dict[col_num] for col_num in gKn.es["color_assigned"]]    KeyError: 1.0

这不是什么大惊喜,因为我几乎是随机做的。那么我如何才能做到这一点以及这个边缘事物是如何工作的?

Ps:我遵循的绘图教程:https://igraph.org/python/doc/tutorial/tutorial.html

编辑: 我做了一些不同的事情,它似乎工作得很好。这是我写的:

    gKn = igraph.Graph(n)
    TMP = []
    for i in range(n):
        for j in range(i):
            gKn.add_edge(i,j)
            TMP.append(M[i][j])
    gKn.es["color_assigned"] = TMP

    color_dict = {"1" : 'red',"2": 'blue',"3": 'green'} 

    igraph.plot(gKn,edge_color = [color_dict[str(int(col_num))] for col_num in gKn.es["color_assigned"]])

我认为我遇到的问题是我没有(或者至少我不知道)对边缘索引的控制。在这里,我确切地知道它们的顺序,所以我可以毫无问题地执行 gKn.es["color_assigned"] 行。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)