使用Python igraph为图中的边进行标记

6

我有一个有向图的邻接矩阵(即一系列权重),我想在最终图中添加标签(对应于权重的值)到边上。换句话说,我想获得类似这个的东西。 我正在使用Python igraph,我的代码如下:

import numpy as np
import igraph as ig


N = 6

adj_matr = np.random.random((N, N))

g = ig.Graph.Weighted_Adjacency(adj_matr.tolist(), mode=ig.ADJ_DIRECTED, attr="weight", loops=True)

ig.plot(g, "My_Graph.svg", vertex_label=map(str, np.arange(N)))

我已经知道如何在节点上设置标签,但是对于边缘没有找到具体的方法(在绘图命令中添加edge_label=...不起作用)。你知道如何解决这个问题吗?非常感谢你的帮助!


2
你使用的是哪个版本?4个月前有一个提交添加了对边缘标签的支持:https://github.com/igraph/igraph/commit/ab936ebd7aaaf51261a94a7ba9bc5d85ca967169 - Mailerdaimon
哦,我明白了,我使用的是旧版本。因此,我找到的解决方案都不起作用。 - user2983638
由于新版本0.7尚未发布,我该如何解决这个问题? - user2983638
1
你可以在这里找到0.6.7-pre版本,检查更改是否已经生效:https://github.com/igraph/igraph/releases - Mailerdaimon
3
另外一种选择是尝试从http://igraph.org/nightly安装夜间版本。Python版本中的`setup.py`安装程序现在应该已经足够智能,可以自动下载相应的C核心。 - Tamás
显示剩余2条评论
1个回答

3

使用vertex_label=等同于g.vs=

所以要给你的边标签,请使用g.es=

g.es["label"] = ["A", "B", "C"]

或者

g.es["name"] = map(str, np.arange(N))

@IanPhillips 对我来说有效。 在文档中查看:http://hal.elte.hu/~nepusz/development/igraph/tutorial/tutorial.html#setting-and-retrieving-attributes - punkrockpolly
你使用的是v0.7或以上版本吗?我一更新到0.7,边缘标签就出现了。此外,你链接的文档乍一看似乎没有提到边缘标签,只有顶点标签。 - Ian Phillips
在我提供的文档中: >>> g.es["is_formal"] = [False, False, True, True, True, False, True, False, False] - punkrockpolly

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接