2017-07-26 43 views
1

我使用seaborn.clustermap生成了一个clustermap。我想表现的row_colors选项突出一些集群但是这是我得到的结果是:Seaborn clustermap不显示行颜色

clustermap with missing row_colors

在这里你可以找到我的代码:

pal = sns.light_palette('red', np.unique(labels).size) 
lut = dict(zip(np.unique(labels), pal)) 
row_colors = pd.Series(labels, name='clusters').map(lut) 
sns.clustermap(my_data, method='ward', robust=True, row_colors=row_colors) 

但是,如果我从运行示例seaborn文件我没有任何问题:

enter image description here

iris = sns.load_dataset("iris") 
species = iris.pop("species") 
lut = dict(zip(species.unique(), "rbg")) 
row_colors = species.map(lut) 
g = sns.clustermap(iris, row_colors=row_colors) 

为什么突出显示在我的代码中不起作用?

+0

它自我工作的代码。当我尝试使用你的代码来处理虹膜数据集时,我得到了一个带有行颜色的热图。你能提供一下pal和lut输出的内容吗?我唯一的猜测是那里出了问题。对我来说,似乎你只有白色的行颜色,因为在树状图和实际热图的列之间有一个较大的正常空间。 – error

回答

2

非常感谢你的回答错误。我发现了这个问题。我有一个MultiIndex数据框,出于某种原因,它不绘制row_color。其实这是与虹膜示例代码唯一的区别。

我只是解决了这一问题这样做:

sns.clustermap(my_data.reset_index(drop=True), method='ward', robust=True, row_colors=row_colors) 

,现在,它的工作原理:

enter image description here

我不知道这是否可以看作是一个错误,但它看起来喜欢。 也许这可以帮助解决它。