You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何让NetworkX绘制的图显示对应度数序列的节点度数?

解决NetworkX绘图显示原始度数序列标签的问题

核心就是给每个节点绑定你输入的度数作为自定义标签,然后绘图时指定用这些标签就行,直接上修改后的代码和说明:

代码示例

假设你原来的代码是这样的:

import networkx as nx
import matplotlib.pyplot as plt

degree_seq = [1, 2, 3, 4]
G = nx.configuration_model(degree_seq)

# 原来的绘图(只显示节点编号)
nx.draw(G, with_labels=True)
plt.show()

改成下面这样,就能让节点显示对应的输入度数:

import networkx as nx
import matplotlib.pyplot as plt

degree_seq = [1, 2, 3, 4]
G = nx.configuration_model(degree_seq)

# 做个节点到原始度数的映射:节点ID对应度数序列里的数值
node_labels = {i: degree_seq[i] for i in range(len(degree_seq))}

# 先算布局,分开画节点和标签,样式更可控
pos = nx.spring_layout(G)
# 先画节点和边,不显示默认标签
nx.draw(G, pos, with_labels=False, node_size=800)
# 把自定义的度数标签画上去,还能调字体样式
nx.draw_networkx_labels(G, pos, node_labels, font_size=16, font_color="white")

plt.show()

关键细节

  • node_labels字典直接把每个节点的索引(0、1、2、3)对应到你输入的度数序列值,保证每个节点显示的是你想要的度数。
  • 分开绘制节点和标签是为了避免默认标签的样式问题,比如把字体设成白色放在深色节点上,看得更清楚。
  • 如果你的度数序列是[4,4],用同样的方法,两个节点都会显示4,完全符合需求。

额外优化(可选)

configuration_model可能生成自环或者多重边,要是想让图更规整,可以加两行代码去掉这些:

# 移除自环
G.remove_edges_from(nx.selfloop_edges(G))
# 把多重边转成简单边
G = nx.Graph(G)

内容的提问来源于stack exchange,提问作者learner_from_scratch

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.02 09:40:25