python - 多重图的线图

标签 python networkx igraph

我有一个加权有向多重图,我想用它制作一个折线图。也就是说,如果原始多重图中的两条边之间存在具有公共(public)节点的有向路径,则用一个节点替换每条边并连接两个节点。然而,就我而言,我只说如果第二条边的权重大于第一条边,则两条边之间存在路径。

networkx中有一个基本线图算法的实现http://networkx.github.io/documentation/latest/reference/generated/networkx.generators.line.line_graph.html 。但是,这不支持多重图。

在networkx或igraph中是否有一个好的方法来做到这一点?

最佳答案

igraph 解决方案(尚未测试,因为我现在没有太多时间)- 假设权重存储在 weight 边缘属性中:

weights = g.es["weight"]
line_graph_edges = []
for v in xrange(g.vcount()):
    incoming = g.incident(v, mode="in")
    outgoing = g.incident(v, mode="out")
    line_graph_edges.extend((e1, e2) for e1 in incoming for e2 in outgoing
        if weights[e1] < weights[e2])
line_graph = Graph(g.ecount(), line_graph_edges)

关于python - 多重图的线图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18026827/

相关文章:

Python 字符串清理 + 操作(重音字符)

python - 向节点、边和图添加属性

python - 如何访问图中特定顶点的名称(python-igraph)

r - 使用Ifelse时Igraph无效索引错误

python - 在 python 中显示覆盖率的命令行选项

python - hset() 用于 python 中的 redis

Python - 正确提取拆分列表

python - 在另一个子图上绘制 Networkx Graph 后,轴消失

python - 如何使用 Python 形成文件夹图表

python + igraph "plotting not available"