在聚类地图上为值设置为零的特定颜色

man*_*anz 3 python colors matplotlib pandas seaborn

我想对带有seaborn的群集地图的图形输出有所帮助。

在我的数据中,我缺少转换为0的数据。

我希望白色的值等于0,其余部分为调色板。

有没有办法在cmap中指示它?

import pandas as pd
from random import randint
import seaborn as sns
import matplotlib.pyplot as plt


df = pd.DataFrame({'A': [randint(1, 10) for x in xrange(10)]+[randint(30, 50) for x in xrange(5)]+[randint(70, 100) for x in xrange(5)],
         'B': [randint(0, 2) for x in xrange(10)]+[randint(30, 50) for x in xrange(5)]+[randint(70, 100) for x in xrange(5)],
         'C': [randint(0, 10) for x in xrange(10)]+[randint(30, 50) for x in xrange(5)]+[randint(60, 100) for x in xrange(5)],
         'D': [randint(0, 40) for x in xrange(10)]+[randint(30, 50) for x in xrange(5)]+[randint(60, 100) for x in xrange(5)]})

cmap = sns.cubehelix_palette(as_cmap=True, start=.5, rot=-.75, light=.9)

sns.clustermap(df, figsize=(13, 13), cmap=cmap)
Run Code Online (Sandbox Code Playgroud)

实际集群: 实际集群

结果值为白色的白色: 结果为白色的白色= 0

tmd*_*son 5

clustermap有kwarg mask。从文档

mask:布尔数组或DataFrame,可选

如果通过,数据将不会显示在mask为True的单元格中。缺少值的单元格将被自动屏蔽。仅用于可视化,不用于计算。

因此,对于您的示例,可以使用布尔数组,如下所示: mask=(df==0)

sns.clustermap(df, figsize=(13, 13), cmap=cmap, mask=(df==0))
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明