首页 > 解决方案 > Clustermap Seaborn 掩盖了矩阵的上对角线,固定每个“单元格”的大小并删除连接每个单元格的线

问题描述

所以我绘制了相关性的聚类图,如果你们能帮助我,我发现了一些挫折。

import seaborn as sns 
import matplotlib.pyplot as plt 
import numpy as np 

grafico_correlacao_renda_variavel_long_biased = sns.clustermap(correlacao_renda_variavel_long_biased, linewidths=.5,figsize=(40,40),annot= True,mask=mask,annot_kws={"size": 25})
plt.setp(grafico_correlacao_renda_variavel_long_biased.ax_heatmap.get_yticklabels(), rotation=0,fontsize=45)
plt.setp(grafico_correlacao_renda_variavel_long_biased.ax_heatmap.get_xticklabels(), rotation=90,fontsize=45)
grafico_correlacao_renda_variavel_long_biased.fig.suptitle('Renda Variável Long Biased',fontsize=100) 
grafico_correlacao_renda_variavel_long_biased.savefig('teste.pdf')
plt.show() 

在此处输入图像描述

那么我的问题是什么:

1)顶部和底部只显示一半大小,我不知道修复它,我尝试减小大小但它没有做任何事情。

2)虽然我希望地图被聚类,但我不希望地图外的线连接每个“单元格”,有没有办法删除它?

3)我想只显示对角矩阵的下部,但是当我应用蒙版时,它给了我整个矩阵的几个空格

我的面具:面具= np.zeros_like(correlacao_renda_variavel_long_biased,dtype = np.bool)面具[np.triu_indices_from(面具)] =真

在此处输入图像描述

标签: pythonpandasseaborn

解决方案


似乎问题在于 clustermap 正在将掩码与数据一起置换。我对此的解决方案是运行 clustermap 两次:一次找出排列以创建掩码,这样一旦将排列应用于它,就可以恢复实际想要的掩码。然后,使用这个新掩码运行 clustermap。那是:

g = grafico_correlacao_renda_variavel_long_biased #for conciseness
# apply the inverse permutation to the mask
mask = mask[np.argsort(g.dendrogram_row.reordered_ind),:]
mask = mask[:,np.argsort(g.dendrogram_col.reordered_ind)]
# run the clustermap again with the new mask
grafico_correlacao_renda_variavel_long_biased = sns.clustermap(correlacao_renda_variavel_long_biased, linewidths=.5,figsize=(40,40),annot= True,mask=mask,annot_kws={"size": 25})

我希望这不会来得太晚。我刚刚遇到了完全相同的问题并找到了您的问题。


推荐阅读