【问题标题】:How to only show important node's name on the networkx graph?如何在networkx图上只显示重要节点的名称?
【发布时间】:2019-03-24 03:12:51
【问题描述】:
图表看起来很乱,几乎认不出任何东西。
我只希望它显示具有高中心性的节点的名称,
但我不知道怎么做。我现在只能显示所有的名字。
Graph:the result of the following codes
G_D=nx.Graph() G_D.add_edges_from(G5.edges(data=True))
nx.draw(G_D,nx.spring_layout(G_D),node_size=[v * 10 for v in
df.iloc[:,0]],with_labels= True)
【问题讨论】:
标签:
python
label
networkx
【解决方案1】:
nx.draw 有一个参数labels,结合with_labels=True 可以只绘制你想要的标签,只画你想要的。
labels (dictionary, optional (default=None)) – 节点标签
以文本标签节点为键的字典
例如,您可以选择节点 'label' 参数并为具有 3 个或更多邻居的节点绘制标签:
labels = {
n: (G.nodes[n]['label']
if len(list(nx.all_neighbors(G, n))) > 2
else '')
for n in G.nodes
}
nx.draw(G, with_labels=True, labels=labels)
附:我不推荐使用基本的networkx绘图功能。有很多强大的可视化库比 networkx 更好。即使in networkx docs 你也可以找到相同的意见。可以使用Gephi、Graphviz(带有各种库)或Cytoscape 来绘制非常大的图表。