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

如何根据列表值或聚类结果为节点分配指定颜色?

按数值/聚类结果为节点分配颜色的可行方案

通用核心思路

  • 先建立颜色-标签/数值的映射关系:可以用预设调色板,也可以自定义专属颜色
  • 给每个节点匹配对应的颜色值
  • 在可视化工具中传入颜色参数即可实现

1. 散点图场景(Matplotlib/Seaborn)

如果是展示聚类后的样本点,两种实现方式:

  • 自动映射:用Seaborn的hue参数直接绑定聚类标签,自动分配调色板颜色
  • 手动自定义:自己指定每个簇的颜色,再批量匹配给节点
import matplotlib.pyplot as plt
import seaborn as sns
import numpy as np

# 模拟数据:200个二维样本,3个聚类簇
X = np.random.randn(200, 2)
cluster_labels = np.random.randint(0, 3, 200)

# 方法1:自动分配颜色
sns.scatterplot(x=X[:,0], y=X[:,1], hue=cluster_labels, palette="viridis")
plt.show()

# 方法2:自定义簇颜色
color_map = {0: "#FF5733", 1: "#33FF57", 2: "#3357FF"}
node_colors = [color_map[label] for label in cluster_labels]
plt.scatter(X[:,0], X[:,1], c=node_colors)
plt.show()

2. 图结构节点场景(NetworkX)

针对社交网络、知识图谱这类图节点,先给节点添加聚类属性,再批量匹配颜色:

import networkx as nx
import matplotlib.pyplot as plt

# 加载示例图
G = nx.karate_club_graph()
# 模拟聚类结果:前17个节点为簇0,后17个为簇1
cluster_labels = {node: 0 if node <17 else 1 for node in G.nodes()}

# 自定义颜色映射
color_map = {0: "darkred", 1: "royalblue"}
node_colors = [color_map[cluster_labels[node]] for node in G.nodes()]

# 绘制带颜色的图
nx.draw(G, node_color=node_colors, with_labels=True, node_size=600)
plt.show()

3. 连续数值映射场景

如果是根据连续型数值(比如节点权重、中心度)分配渐变颜色,用颜色映射器实现:

import matplotlib.pyplot as plt
import numpy as np
from matplotlib.colors import Normalize
from matplotlib.cm import plasma

# 模拟50个节点的连续数值
node_values = np.random.rand(50)
# 把数值归一化到0-1区间
norm = Normalize(vmin=node_values.min(), vmax=node_values.max())
# 映射到渐变颜色
node_colors = plasma(norm(node_values))

# 绘制带颜色梯度的散点图
plt.scatter(np.random.rand(50), np.random.rand(50), c=node_colors, s=150)
plt.colorbar(label="Node Value")
plt.show()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.07 06:05:15