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

如何在Matplotlib中生成分层颜色映射?

层级化数据集热力图的颜色映射需求

我有一个层级化数据集,想要按特定方式可视化,目前已成功构建热力图。需要在Matplotlib中生成颜色映射,使Level 1使用分类颜色,Level 2使用对应Level 1颜色的不同色调。我已从tab20调色板获取Level 1的颜色,但不知如何生成基础Level 1颜色的色调。

编辑:需要说明的是,这需要一个通用脚本,不能硬编码颜色映射。

最小可复现代码(MWE)

目前代码仅基于Level 1值创建颜色映射,我不确定如何为Level 2颜色生成色调:

import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt
import matplotlib as mpl

df = pd.DataFrame({"Level 2": [4, 5, 6, 6, 7], "Level 1": [0, 0, 1, 1, 1]}).T

colours = mpl.colormaps["tab20"].resampled(len(df.loc["Level 1"].unique())).colors

colour_dict = {
    item: colour for item, colour in zip(df.loc["Level 1"].unique(), colours)
}

sns.heatmap(
    df,
    cmap=mpl.colors.ListedColormap([colour_dict[item] for item in colour_dict.keys()]),
)
colours

在此示例中,4和5应为0对应颜色的色调,6和7应为1对应颜色的色调。

编辑2

应用@mozway的答案后,得到对应的热力图:
这是包含423个Level 2值且n=500的情况。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.21 15:39:56