2016-07-02 18 views
1

これは非常に基本的だと確信していますが、グラフを構築するときにノード間に任意の数のエッジを指定できますか?私は、「有向グラフ」、「複数有向グラフ」、「平行エッジ」、「add_edges」などの用語で検索してきました。複数の並列エッジを同時に追加する - Networkx

私は4つのノードを持っています:A、B、C、D、I Bへ 、Cに600件の縁 あり、Dへの100個のエッジ 持って、私はのようなものを考えている400個のエッジ

あります:表示したい(もちろん、場合を除き

import networkx as nx 
G = nx.MultiDiGraph() 
G.add_node('a', {'b': 600, 'c':100, 'd':400}) 
G.add_node('b') 
G.add_node('c') 
G.add_node('d') 

をこれは間違っています)

答えて

2

ドキュメントによると:https://networkx.github.io/documentation/development/tutorial/tutorial.html あなたはタプルのリストからエッジを追加する必要があります。

import networkx as nx 

a = {'b': 600, 'c':100, 'd':400} 
MG=nx.MultiGraph() 
MG.add_weighted_edges_from([('a', k, v) for k, v in a.iteritems()], weight='weight') 
print MG.edges(data='weight') 

出力:あなたは、単一のエッジを追加し、おそらくそれらの重量(どのようなOPのニーズを割り当てられますが、いませんでした

[('a', 'c', 100), ('a', 'b', 600), ('a', 'd', 400)] 
+1

彼が求めたもの)。複数の辺を追加するには、 'MG.add_edges_from([( 'a'、 'b')] * 600)' – Joel

+0

のようなことができます。どちらの方法も私には複数のエッジを与えてくれます。私がそれらをプロットすると、ノード 'a'からターゲットまでの唯一のエッジラインが表示されます。私は複数の別々のエッジラインを見ることを期待していました(希望ですか?)。私はソースからターゲットまでの相互作用の量をプロットしようとしています(飛行経路プロットのようなもの)。 –

+1

デフォルトでは、networkxでマルチエッジグラフをプロットすることはできません。この質問を見てください:http://stackoverflow.com/questions/10379448/plotting-directed-graphs-in-python-in-a-way-that-show-all-edges-separately – Serenity

関連する問題