2013-02-02 5 views
10

네트워크를 그려야하는데 크레텐 노드를 제외하고 레이블이 지정되지 않도록하고 싶습니다.Networkx의 특정 노드 레이블 지정

nx.draw(G, pos=pos, node_color='b', node_size=8, with_labels=False) 

for hub in hubs: 
    nx.draw_networkx_nodes(G, pos, nodelist=[hub[0]], node_color='r') 

순간 코드는 허브 목록에서 노드의 크기와 색상을 변경 : 내가 지금 무엇을 가지고

이 같은 것입니다. 나는 그들에게도 레이블을 붙이고 싶습니다.

레이블 인수를 추가하고 해당 값을 허브 이름으로 설정하려고했습니다. 그러나 그것은 효과가 없었습니다. 이 솔루션은

트릭 매우 쉽습니다 불라의 코멘트에서

감사

+2

경우'G'는 허브 노드와 값만큼 키가 사전에 설정 labels''와'nx.draw_networkx'를 호출해야 레이블/문자열. – Bula

+0

실제로 당신이 말한 것은 문제를 해결했습니다 :) 감사합니다. – amaatouq

답변

16

키 노드 이름과 값이 필요한 레이블입니다 사전에 레이블을 설정하는 것입니다. 따라서 단지 허브 레이블을, 코드는 다음과 비슷한 것입니다 :

labels = {}  
for node in G.nodes(): 
    if node in hubs: 
     #set the node name as the key and the label as its value 
     labels[node] = node 
#set the argument 'with labels' to False so you have unlabeled graph 
nx.draw(G, with_labels=False) 
#Now only add labels to the nodes you require (the hubs in my case) 
nx.draw_networkx_labels(G,pos,labels,font_size=16,font_color='r') 
난 다음 인 원하는 걸 얻었

: enter image description here

나는이 같은 다른 파이썬/networkx 초보자 도움이 될 희망 자신 :)

다시

, 감사 불라는

`hubs` 항목이 이미 그래프에
+0

도움이 되니 기쁘다.이 정보는 [documentation] (http://networkx.github.com/documentation/latest/reference/generated/networkx.drawing.nx_pylab.draw_networkx .html # networkx.drawing.nx_pylab.draw_networkx)하지만 표현식이 명확하지 않아서 안전한 곳으로 가려면'draw_networkx' [source line] (https://github.com/networkx/networkx)에서 실험하거나 살펴볼 수 있습니다. /blob/master/networkx/drawing/nx_pylab.py#L262) 여기에서 'draw_networkx_labels'및 [there] (https://github.com/networkx/networkx/blob/master/networkx/drawing/nx_pylab.py# L698) 그것은 사전을 만드는 사전을 반복한다. – Bula

관련 문제