web-dev-qa-db-ja.com

ノード値に基づいてnetworkxのノードに異なる色を描画します

ノードと有向エッジの大きなグラフがあります。さらに、各ノードに割り当てられた値の追加リストがあります。

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

30
fsociety
_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('viridis'), node_color=values, with_labels=True, font_color='white')
plt.show()
_

収量 enter image description here


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

53
unutbu