2013-02-24 62 views
10

を可視化する際に正しくマルチグラフプロットを下記(this answerに示すように)Networkx:重複縁マルチグラフ

import networkx as nx 
nx.MultiGraph ([(1,2),(1,2),(1,2),(3,1),(3,2)]) 
nx.write_dot(Gm,'multi.dot') 
!neato -T png multi.dot > multi.png 

しかしながらNetworkxの描画機能を使用して、PNGを生成するために、graphvizのの格好いいを使用して(すなわち、平行エッジが重なりません)トリックをしない

nx.draw_graphviz(Gm,prog='neato') 

Networkxの描画方法を使用してエッジが重なるのを防ぐことはできますか?

ありがとう。

答えて

8

残念ながら、技術的には可能ですが、これまで誰もコードを書いていません。

+0

関連、これはNetworkXに追加する必要がどこにヒンティング:https://groups.google.com/forum/#!msg/networkx-discuss/K6QYbpBDUfk/1GqbsiocpCAJ –

0

よく分かっていますが、私は、おそらくあなたが探しているものではないことを知っていますが、私は2つのノード間のエッジが方向に応じて異なる重みを持つ有向グラフを持ちたいと思っていました。ノードの出入り)と私が行った作業は、各エッジに異なる色を使用し、それらの1つの不透明度を下げて、重なりあっても表示されるようにしました。 私は2つのノード間に2つのエッジしか必要としませんでしたので、私のためにトリックを行いました。

G = nx.DiGraph() 
G.add_nodes_from([0,1]) 
pos = nx.circular_layout(G) 
nx.draw_networkx_nodes(G, pos, node_color = 'r', node_size = 100, alpha = 1) 
nx.draw_networkx_edges(G, pos, edgelist = [(0,1)], width = 2, alpha = 0.5, edge_color='b') 
nx.draw_networkx_edges(G, pos, edgelist= [(1,0)], width = 1, alpha = 1) 
plt.axis('off') 
plt.show() 

enter image description here