网络X特定节点标签化

23

我想画一张网络图,除了某些节点之外,我希望它没有标签。

目前我有类似以下的东西:

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')

目前的代码改变了中心节点列表(hubs list)中节点的大小和颜色。我希望还能给它们添加标签。

我尝试增加了 label 参数并将其值设置为中心节点名称,但似乎没有奏效。

谢谢!


3
如果hubs中的项已经在图形G中,则应调用nx.draw_networkx并将labels设置为一个字典,其中键为中心节点,值为标签/字符串。 - Bula
实际上,你所说的解决了问题 :) 谢谢 - amaatouq
1个回答

50

根据Bula的评论,解决方案非常简单

诀窍是将标签设置在一个字典中,其中键是节点名称,值是所需的标签。因此,仅对中心节点进行标记的代码将类似于这样:

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 我希望这会帮助像我一样的Python/NetworkX新手 :) 再次感谢Bula。

2
很高兴它有所帮助,这些信息在文档中已经有了,但表达不够清晰,所以为了保险起见,您可以进行实验或查看draw_networkx源代码行,在那里它调用draw_networkx_labels这里,它遍历字典制作标签。 - Bula

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接