2017-03-17 7 views
1

私は、Pythonのネットワーク解析にNetworkXを使用しています。私は、すべてのエッジの重みを決定し、次のようにグラフにそのエッジを追加します。コンテキストの場合ネットワークxのエッジをその重みに基づいてソートする方法

import matplotlib.pyplot as plt 
import networkx as nx 
import numpy as np 


airports = ['ATL','LAX','ORD'] 
weights = [500,200,150] #Note that in my real code I I calculated these weights, they are not provided 
G = nx.Graph() 
G.add_nodes_from(airports) 

weightlst = [] 
airports_pos = [] 
checked_airports = [] 

i = 0 
for airport1 in airports: 
    for airport2 in airports: 
     if airport1 != airport2 and checked_airports.count([airport1,airport2])==0 and checked_airports.count([airport2,airport1])==0: 
      weightedge = weights[i] 
      weightlst.append(weightedge) 
      weightedge = weightedge*0.0020+0.5 
      G.add_edge(airport1, airport2, weight=weightedge) 
    checked_airports.append([airport1,airport2]) 
    i = i + 1 

、各エッジの重みは、2つの空港の間に発生するどのように多くの便を示していると私の問題は、それがあるということです無関係なエッジが関連するものの上に描画されるため、どのルートが「最も忙しい」かは不明です。最終的に最高のウェイトを持つエッジを描画し、ネットワーク内の「最も混雑しているフライトルート」を明確にしたいと思います。

+0

なぜエッジを追加する順序を変更したいのですか?あなたのグラフがノードのペアごとに複数のエッジを持つことができるようにしますか? –

+0

私は30のノードと435のエッジからなるネットワークを持っています。このネットワークを適切な方法で視覚化できるようにするには、より重いエッジをエッジの上に描画して、より小さなウェイトで描画するようにします(カラーグラデーションを使用します。重みが高いほど、エッジの色が濃くなります)。 –

答えて

0

すべてのエッジデータをリストに入れて、カスタムキー機能で並べ替えます(これは検索が非常に簡単です)。 NetworkXはおそらく必要でないため、あなたが望むことをする機能を持っていないでしょう。

+0

それは私にソートされたウェイトリストを与えますが、私のエッジが配置される方法は変更されません。これは、私のエッジが間違ったウェイトで描かれる原因になります。 –

+0

@ Kees'tHooft no、私は体重のリストについて話していません、私はすべての項目が体重と2つのノードを含むリストについて話しています、あなたは体重でソートします。 –

+0

これを実現するコードの基本的な例を私に提供してもらえますか?私はあなたの推論に従って、私は前のコメントで言ったことをするコードを書こうとしていますが、私のコードは動作していません。私は事例が私のために明確になると思う。ありがとうございましたあなたの助けを –

関連する問題