如何在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
相关产品推荐
相关产品推荐

