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

如何在Matplotlib中扩展调色板以适配多变量绘图需求?

解决Matplotlib多变量颜色重复问题的方案

针对你遇到的「40个变量循环绘图时,Matplotlib默认10色调色板不够用导致颜色重复」的问题,这里有几个灵活适配任意变量数量的解决方案,保证每个变量都有独有的、区分度高的颜色:

方案1:利用Matplotlib内置Colormap生成连续颜色

Matplotlib提供了大量内置的颜色映射(Colormap),可以直接根据变量数量生成对应数量的离散颜色,而且很多调色板是色盲友好的,比如viridis:

import matplotlib.cm as cm

# 获取变量总数,生成对应数量的颜色列表
total_vars = len(num_columns)
# 选择viridis调色板,生成total_vars个颜色
color_list = cm.get_cmap('viridis', total_vars)(range(total_vars))

# 循环绘图时直接取对应颜色
for i, col in enumerate(num_columns):
    plot_cumulative_dynamic_auc(X_test.iloc[:, i], col, color=color_list[i])
    ret = concordance_index_ipcw(y_trn, y_test, X_test.iloc[:, i], tau=times[-1])

你可以替换viridis为其他调色板,比如plasma、inferno、cividis(这些都是对色盲友好的选项);如果喜欢鲜艳的颜色,也可以用rainbow。

方案2:用Seaborn生成高区分度调色板

Seaborn的color_palette函数可以轻松生成指定数量的、区分度高的颜色,尤其适合大量变量的场景:

import seaborn as sns

# 生成对应变量数量的husl调色板颜色(色相均匀分布,颜色差异明显)
color_list = sns.color_palette("husl", n_colors=len(num_columns))

for i, col in enumerate(num_columns):
    plot_cumulative_dynamic_auc(X_test.iloc[:, i], col, color=color_list[i])
    ret = concordance_index_ipcw(y_trn, y_test, X_test.iloc[:, i], tau=times[-1])

husl调色板基于人类视觉感知调整了饱和度和亮度,比基础的hls调色板颜色更柔和、区分度更高。你也可以尝试tab20这类专为多类别设计的调色板。

方案3:手动生成色相循环的颜色(无额外依赖)

如果不想引入Seaborn,也可以通过colorsys模块手动生成均匀分布的色相颜色,完全自定义:

import colorsys

total_vars = len(num_columns)
color_list = []

for idx in range(total_vars):
    # 色相从0到1循环,固定饱和度和亮度,保证颜色差异明显
    hue = idx / total_vars
    # 转换为RGB格式(Matplotlib支持RGB元组)
    rgb_color = colorsys.hsv_to_rgb(hue, 0.7, 0.9)
    color_list.append(rgb_color)

for i, col in enumerate(num_columns):
    plot_cumulative_dynamic_auc(X_test.iloc[:, i], col, color=color_list[i])
    ret = concordance_index_ipcw(y_trn, y_test, X_test.iloc[:, i], tau=times[-1])

额外优化建议

当变量数量达到40个时,图例可能会非常拥挤,你可以通过调整图例位置来避免遮挡图表:

plt.legend(bbox_to_anchor=(1.05, 1), loc='upper left', borderaxespad=0)

这样图例会显示在图表右侧,不占用绘图区域。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.28 20:57:41