【问题标题】:Add edge-weights to plot output in networkx添加边缘权重以在 networkx 中绘制输出
【发布时间】:2015-04-06 23:17:36
【问题描述】:

我正在使用 networkx 包在 python 中做一些图论。我想 将我的图表边缘的权重添加到绘图输出中。我怎样才能做到这一点?

例如,如何修改以下代码以获得所需的输出?

import networkx as nx
import matplotlib.pyplot as plt

G=nx.Graph()
i=1
G.add_node(i,pos=(i,i))
G.add_node(2,pos=(2,2))
G.add_node(3,pos=(1,0))
G.add_edge(1,2,weight=0.5)
G.add_edge(1,3,weight=9.8)
pos=nx.get_node_attributes(G,'pos')
nx.draw(G,pos)
plt.savefig("path.png")

我希望 0.5 和 9.8 出现在它们在图中所指的边上。

【问题讨论】:

    标签: python graph networkx


    【解决方案1】:

    您必须致电nx.draw_networkx_edge_labels(),这将允许您...绘制networkX边缘标签:)

    编辑:完全修改的源代码

    #!/usr/bin/python
    import networkx as nx
    import matplotlib.pyplot as plt
    
    G=nx.Graph()
    i=1
    G.add_node(i,pos=(i,i))
    G.add_node(2,pos=(2,2))
    G.add_node(3,pos=(1,0))
    G.add_edge(1,2,weight=0.5)
    G.add_edge(1,3,weight=9.8)
    pos=nx.get_node_attributes(G,'pos')
    nx.draw(G,pos)
    labels = nx.get_edge_attributes(G,'weight')
    nx.draw_networkx_edge_labels(G,pos,edge_labels=labels)
    plt.savefig(<wherever>)
    

    【讨论】:

    • @Joel:添加完整源代码;我不只是链接到文档,我实际上是在提出一种方法 :)
    • @Joel:哦,我不知道那个:)
    • 您的链接已损坏。
    • 是的。将labels 替换为您所指的数字。说真的,这是 Python —— 修复那行代码并不难 :)
    • @ForeverWintr 哦,有趣!是的,这确实是我很高兴学习的东西!这个库进入我的工具箱。
    【解决方案2】:

    我喜欢这样做:

    import matplotlib.pyplot as plt
    pos=nx.spring_layout(G) # pos = nx.nx_agraph.graphviz_layout(G)
    nx.draw_networkx(G,pos)
    labels = nx.get_edge_attributes(G,'weight')
    nx.draw_networkx_edge_labels(G,pos,edge_labels=labels)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-09-24
      • 2020-08-28
      • 2021-06-03
      • 2012-10-24
      • 2018-11-25
      • 2014-05-22
      • 2020-12-16
      • 1970-01-01
      相关资源
      最近更新 更多