{'human', 'machine'}
의 두 가지 유형에 속하는 작은 예제 노드 세트에서 작업 중이며 networkx
그래프의 각 노드 외부에 사전 형태로 노드 속성을 레이블로 지정하려고합니다 (예 : 노드 c, e, j를 선택하십시오. (I 사전 형 그래프에 속성을 추가 할 MS 워드를 사용했습니다.) :레이블링 네트워크 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()
을 사용하려면 원래 노드 이름이 속성 값으로 대체됩니다.
노드 안에 노드 이름을 유지하면서 각 노드 외부에 사전 형식의 특성을 레이블링하는 대체 방법이 있는지 궁금합니다. 현재 코드를 어떻게 수정해야합니까?
답변을 주셔서 감사합니다. 문제가 해결되면 도움이됩니다. –