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

NetworkX节点颜色与大小字典映射问题求助

解决NetworkX节点十六进制颜色与大小映射问题

1. 匹配颜色/大小列表与节点数量

如果要给每个节点单独设置颜色和大小,node_color和node_size的列表长度必须严格等于图的节点总数。示例代码:

import networkx as nx
import matplotlib.pyplot as plt

# 创建示例图
G = nx.Graph()
G.add_nodes_from([1,2,3,4])

# 每个节点对应唯一的十六进制颜色和大小
node_colors = ["#FF0000", "#00FF00", "#0000FF", "#FFFF00"]
node_sizes = [200, 400, 600, 800]

# 正常绘图
nx.draw(G, node_color=node_colors, node_size=node_sizes, with_labels=True)
plt.show()

2. 规范十六进制颜色格式

十六进制颜色必须以#开头,后跟6位(RGB)或8位(RGBA)合法字符(0-9、A-F/a-f),不能有拼写错误。如果所有节点用同一种颜色,直接传单个字符串即可:

# 所有节点统一使用#336699颜色
nx.draw(G, node_color="#336699", node_size=500, with_labels=True)

如果颜色存在节点属性里,要确保属性值是有效格式:

# 给节点添加color属性
for n in G.nodes:
    G.nodes[n]['color'] = "#FF0000" if n % 2 == 0 else "#00FF00"

# 提取所有节点的颜色列表
node_colors = [G.nodes[n]['color'] for n in G.nodes]
nx.draw(G, node_color=node_colors, with_labels=True)

3. 保证节点大小为数值类型

node_size必须是整数或浮点数,不能是字符串。如果大小存在节点属性中,要确保属性值是数值:

# 给节点添加size属性
for n in G.nodes:
    G.nodes[n]['size'] = 300 * n

# 提取所有节点的大小列表
node_sizes = [G.nodes[n]['size'] for n in G.nodes]
nx.draw(G, node_size=node_sizes, with_labels=True)

4. 排查字典映射的完整性

如果用字典映射节点到颜色/大小,要确保所有节点都在字典中有对应值,避免KeyError:

# 节点-颜色映射字典
color_map = {1:"#FF0000", 2:"#00FF00", 3:"#0000FF", 4:"#FFFF00"}
# 按节点顺序提取颜色
node_colors = [color_map[n] for n in G.nodes]

# 节点-大小映射字典
size_map = {1:200, 2:400, 3:600, 4:800}
node_sizes = [size_map[n] for n in G.nodes]

nx.draw(G, node_color=node_colors, node_size=node_sizes, with_labels=True)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 20:33:18