2012-11-22 5 views
23

ノードと有向エッジの大きなグラフがあります。さらに、私は各ノードに割り当てられた値の追加リストを持っています。ノード値に基づいてnetworkxのノードに異なる色を描画します

これで、ノード値に応じて各ノードの色を変更したいと考えています。たとえば、非常に高い値の赤色と低い値の青色(ヒートマップに類似)を持つノードを描画します。これはどういうわけか簡単に達成できますか? networkxでない場合、私はPythonで他のライブラリにもオープンしています。

答えて

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

G = nx.Graph() 
G.add_edges_from(
    [('A', 'B'), ('A', 'C'), ('D', 'B'), ('E', 'C'), ('E', 'F'), 
    ('B', 'H'), ('B', 'G'), ('B', 'F'), ('C', 'G')]) 

val_map = {'A': 1.0, 
      'D': 0.5714285714285714, 
      'H': 0.0} 

values = [val_map.get(node, 0.25) for node in G.nodes()] 

nx.draw(G, cmap=plt.get_cmap('jet'), node_color=values) 
plt.show() 

収率

enter image description here


valuesに番号がG.nodes()内のノードに関連付けられています。 つまり、valuesの最初の数字はG.nodes()の最初のノードに関連付けられ、同様に2番目のノードなどに関連付けられます。

+0

ありがとう、これは本当に役に立ちます。私はまだ、node_color配列が対応するノードにどのくらい正確にマッピングされているかはまだよく分かりません。例えば、私はそれぞれのラベル(13,557,35)を持つ3つのノードを持っています。どのようにして異なるノードの色をどのくらい正確に割り当てるのですか? – fsociety

+1

'node_color'に与えられる値は、' G.nodes() 'にリストされたノードと同じ順序でなければなりません。私はコードを変更して、値val_mapを任意の値にマッピングし、正しい順序で 'values'リストを生成する方法を示しました。 – unutbu

+0

非常に大きなグラフがある場合、どの色がどの値に対応するのか – MysticForce

関連する問題