如何在NetworkX中将图节点标签修改为自定义名称
解决NetworkX绘图自定义节点标签问题
你现有代码存在两个需要调整的问题:
- 标签映射字典方向写反:
nx.draw()的labels参数要求传入{原始节点值: 要显示的标签}格式的字典,你当前写的是{标签: 节点值},方向完全相反 - 字典存在重复键:Python字典中重复的键会被后定义的内容覆盖,你当前的
nodes_labels里重复写了C、D键,会导致前面的定义失效,需要先整理好正确的节点-标签对应关系:1对应A、2对应B、3对应C、4对应C、5对应D、6对应E
修正后的完整可运行代码如下:
import networkx as nx import matplotlib.pyplot as plt G = nx.Graph() edges= [(1,2),(1,3),(2,4),(2,5),(5,6)] G.add_edges_from(edges) # 修正为正确方向的标签映射字典 nodes_labels = {1:"A", 2:"B", 3:"C", 4:"C", 5:"D", 6:"E"} # 绘图时传入labels参数指定自定义标签 nx.draw(G, labels=nodes_labels, with_labels=True) plt.show()
如果你后续所有操作都希望用字母作为节点ID,可以选择直接重命名图的节点,后续绘图无需额外传labels参数:
# 直接重命名图节点 G = nx.relabel_nodes(G, nodes_labels) # 直接绘图即可显示字母标签 nx.draw(G, with_labels=True) plt.show()
内容的提问来源于stack exchange,提问作者Pedram
相关产品推荐
相关产品推荐

