【问题标题】:Labelling the edges in a graph with python igraph使用 python igraph 标记图中的边
【发布时间】:2014-01-15 15:02:43
【问题描述】:

我有一个有向图的邻接矩阵(即权重的集合),我想在最终图中的边缘上添加标签(对应于权重的值)。 换句话说,我想获得类似this 的东西。 我用的是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)))

我已经弄清楚如何在节点上设置标签,但我找不到任何关于边缘的具体内容(在 plot 命令中添加 edge_label=... 不起作用)。你知道如何解决这个问题吗?提前感谢您的帮助!

【问题讨论】:

  • 您使用的是什么版本? 4 个月前有一个提交增加了对边缘标签的支持:github.com/igraph/igraph/commit/…
  • 哦,我明白了,我使用的是旧版本。因此,我找到的解决方案不起作用。
  • 由于新版本0.7还没有,我该如何解决这个问题?
  • 您可以检查更改是否进入了您可以在此处找到的 0.6.7-pre:github.com/igraph/igraph/releases
  • 或者,尝试从 igraph.org/nightly 安装夜间构建。 Python 版本中的setup.py 安装程序现在应该足够智能,可以自动下载相应的 C 内核。

标签: python igraph


【解决方案1】:

使用vertex_label= 等价于g.vs=

所以要标记你的边缘,请使用g.es=:

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

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

【讨论】:

  • @IanPhillips 它对我有用。在文档中查看:hal.elte.hu/~nepusz/development/igraph/tutorial/…
  • 您使用的是 v0.7 或更高版本吗?我一更新到 0.7,边缘标签就出现了。此外,乍一看,您链接到的文档似乎没有提及边缘标签,只有顶点标签。
  • 在我链接到的文档中:>>> g.es["is_formal"] = [False, False, True, True, True, False, True, False, False]
最近更新 更多