【问题标题】:Python, pygraphviz, networkxPython、pygraphviz、networkx
【发布时间】:2014-05-09 23:44:51
【问题描述】:

我使用networkx构建了一个有向加权图,我可以绘制它,但是即使图非常小,它也经常有交叉边。我也使用了 pygraphviz,但我无法添加标签。有人可以帮我吗?

   edge_labels=dict([((u,v,),d['weight'])
              for u,v,d in DG.edges(data=True)])
   pylab.figure(1)
   pos=nx.spring_layout(DG)

   nx.draw(DG, pos)
   nx.draw_networkx_edge_labels(DG,pos,edge_labels=result,font_size=10)

   pylab.show()

如何将其转换为 pygraphviz 图形并为其添加标签

【问题讨论】:

    标签: python networkx pygraphviz


    【解决方案1】:

    Graphviz 在边上绘制“标签”属性。这是一个将标签属性设置为边缘权重(如果存在)的示例。

    import networkx as nx
    import pygraphviz as pgv # need pygraphviz or pydot for nx.to_agraph()
    
    G = nx.DiGraph()
    G.add_edge(1,2,weight=7)
    G.add_edge(2,3,weight=8)
    G.add_edge(3,4,weight=1)
    G.add_edge(4,1,weight=11)
    G.add_edge(1,3)
    G.add_edge(2,4)
    
    for u,v,d in G.edges(data=True):
        d['label'] = d.get('weight','')
    
    A = nx.to_agraph(G)
    A.layout(prog='dot')
    A.draw('test.png')
    

    【讨论】:

    • 好的,但是以后可以添加标签吗,因为我是在构建此图后计算这些值
    • 我看到之后可以赋值,谢谢
    • 注意:这个函数调用现在是A = nx.nx_agraph.to_agraph(G)
    猜你喜欢
    • 1970-01-01
    • 2014-04-08
    • 2017-12-23
    • 2021-05-18
    • 2015-03-08
    • 1970-01-01
    • 1970-01-01
    • 2020-07-15
    • 2013-03-17
    相关资源
    最近更新 更多