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

如何基于dataframe生成多元素对应的唯一颜色映射字典?

自动生成分类颜色映射字典的实现方案

以下提供两种常用实现方式,可根据使用场景选择:

方法1:基于Matplotlib生成(适配任意数量分类)

无需手动输入分类,自动按分类数量采样对应数量的RGB颜色,代码如下:

import pandas as pd
import matplotlib.cm as cm

# 替换为你自己的DataFrame和目标列名
df = 你的DataFrame变量
target_col = "你要处理的列名"

# 1. 提取目标列唯一值
unique_cats = df[target_col].unique().tolist()
cat_count = len(unique_cats)

# 2. 按分类数量从调色板采样颜色,hsv调色板区分度高,适合多分类场景
cmap = cm.get_cmap("hsv", cat_count)

# 3. 生成符合要求的颜色映射字典
color_discrete_map = {}
for idx, cat in enumerate(unique_cats):
    r, g, b, _ = cmap(idx)
    # 把0-1区间的颜色值转为0-255整数
    r = int(r * 255)
    g = int(g * 255)
    b = int(b * 255)
    color_discrete_map[cat] = f"rgb({r},{g},{b})"

方法2:基于Plotly生成(适合搭配Plotly绘图场景)

如果是用Plotly做可视化,可直接调用Plotly内置的离散色板,无需手动转RGB格式,代码如下:

import pandas as pd
import plotly.express as px

# 替换为你自己的DataFrame和目标列名
df = 你的DataFrame变量
target_col = "你要处理的列名"

# 1. 提取目标列唯一值
unique_cats = df[target_col].unique().tolist()

# 2. 拼接多个离散色板,凑够足够的颜色数量(Alphabet有26色、Dark24有24色,合计50色足够覆盖40+分类)
color_pool = px.colors.qualitative.Alphabet + px.colors.qualitative.Dark24

# 3. 生成颜色映射字典
color_discrete_map = {cat: color_pool[i] for i, cat in enumerate(unique_cats)}

补充说明

  • 若需要固定分类和颜色的对应关系,可先对unique_cats做排序(如unique_cats = sorted(df[target_col].unique().tolist())),避免后续数据顺序变化导致同一分类对应颜色改变。
  • 可自行替换代码中的调色板名称调整配色风格,满足不同的可视化需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 18:09:03