Python如何按分类标签生成对应随机RGB颜色值数组
分类类别RGB值分配及数组生成方法
步骤1:提取唯一类别
你给出的示例标签列表为[1, 2, 2, 4, 4, 1, 3, 3, 3, 3],先对标签去重得到唯一类别集合[1,2,3,4],只需为这4个类别各分配一组不重复的RGB三元组即可。
步骤2:为类别分配唯一RGB值
可以根据使用场景选择分配方式:
- 手动指定:适合类别数量少的场景,直接选择辨识度高的颜色即可,比如4个类别的RGB可设置为:
类别1:[253, 0, 134]
类别2:[24, 222, 128]
类别3:[22, 100, 255]
类别4:[222, 111, 74] - 自动生成:如果类别数量较多不想手动配置,可以从HSV颜色空间均匀取色相值后转换为RGB,保证不同类别颜色区分度足够,Python环境下也可以直接调用
matplotlib.cm.get_cmap获取预设离散配色的RGB值。
步骤3:映射生成全量RGB数组
按照标签的顺序,把每个位置的标签替换成对应类别的RGB值即可得到10个数据点对应的3列RGB数组。
以上述示例标签和手动配置的RGB映射为例,最终输出的数组如下:
[[253, 0, 134], [24, 222, 128], [24, 222, 128], [222, 111, 74], [222, 111, 74], [253, 0, 134], [22, 100, 255], [22, 100, 255], [22, 100, 255], [22, 100, 255]]
Python实现参考代码:
import numpy as np # 输入标签列表 labels = [1,2,2,4,4,1,3,3,3,3] # 建立类别到RGB的映射字典 label_rgb_map = { 1: [253, 0, 134], 2: [24, 222, 128], 3: [22, 100, 255], 4: [222, 111, 74] } # 生成RGB数组 rgb_array = np.array([label_rgb_map[label] for label in labels]) print(rgb_array)
内容的提问来源于stack exchange,提问作者maximus
相关产品推荐
相关产品推荐

