私は{'human', 'machine'}
という2つのタイプに属する小さな例のノードセットで作業しています。ノードの属性をノードの外側のディクショナリ形式でnetworkx
のグラフのノードc、 e、jを下のグラフに示します。 (I辞書型グラフに属性を追加するために、MS Wordを使用。):ラベル付けネットワークxノード外のノード属性
import networkx as nx
G = nx.Graph()
G.add_nodes_from(['a', 'b', 'c', 'd', 'e', 'f', 'g'], type = 'machine')
G.add_nodes_from(['h', 'i', 'j'], type = 'human')
G.add_edges_from([('a', 'c'), ('a', 'b'), ('a', 'd'), ('a', 'f'), ('b', 'd'), ('b', 'e'), ('b', 'g'), ('c', 'f'), ('c', 'd'), ('d', 'f'), ('d', 'e'), ('d', 'g'), ('e', 'g'), ('f', 'g'), ('f', 'h'), ('g', 'h'), ('h', 'i'), ('i', 'j')])
def plot_graph(G, weight_name=None):
import matplotlib.pyplot as plt
plt.figure()
pos = nx.spring_layout(G)
edges = G.edges()
weights = None
if weight_name:
weights = [int(G[u][v][weight_name]) for u,v in edges]
labels = nx.get_edge_attributes(G,weight_name)
nx.draw_networkx_edge_labels(G,pos,edge_labels=labels)
nx.draw_networkx(G, pos, edges=edges, width=weights);
else:
nx.draw_networkx(G, pos, edges=edges);
plot_graph(G, weight_name=None)
plt.savefig('example.png')
plt.show()
しかし、ここでは問題である、
:ベースプロットは、次のコードを使用して生成されます
nx.get_node_attributes()
および関数は、ラベルに辞書キー(この例では 'type')を含めません(nx.get_edge_attributes()およびnx.draw_networkx_edge_labels()のみ) nx.get_node_attributes()
とnx.draw_networkx_labels()
を使用する場合、元のノード名は属性値に置き換えられます。
ノード内にノード名を保持しながら、各ノードの外に辞書形式の属性にラベルを付ける別の方法があるのでしょうか?現在のコードをどのように変更すればよいですか?
これを明確にしてくれてありがとうございました。あなたの答えは私の問題を解決するのに役立ちます! –