4

我使用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 图形并为其添加标签

4

1 回答 1

6

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')

在此处输入图像描述

于 2014-03-30T19:28:24.687 回答