在群集地图

时间:2016-01-14 09:36:06

标签: python pandas matplotlib colors seaborn

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

在我的数据中,我丢失了转换为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)

实际群集 Actual cluster

值为白色的结果= 0: Result with white for values=0

2 个答案:

答案 0 :(得分:4)

clustermap有kwarg mask。来自docs

  

掩码:布尔数组或DataFrame,可选

     

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

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

sns.clustermap(df, figsize=(13, 13), cmap=cmap, mask=(df==0))

enter image description here

答案 1 :(得分:0)

上述解决方案对我不起作用,但是将这些特定值(当等于0时)设置为NA是可行的。