如何解决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 举报,一经查实,本站将立刻删除。