Clustermap Seaborn遮罩矩阵的上对角线,固定每个“单元格”的大小并删除链接每个单元格的线

问题描述 投票:1回答:1

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

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() 

enter image description here

所以我有什么问题:

1)顶部和底部仅显示其大小的一半,我不知道要修复它,我尝试缩小尺寸,但是它什么也没做。

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

3)我只想显示对角矩阵的下部,但是当我应用遮罩时,它在矩阵上给了我几个空白

我的遮罩:mask = np.zeros_like(correlacao_renda_variavel_long_biased,dtype = np.bool)mask [np.triu_indices_from(mask)] = True

enter image description here

python pandas seaborn
1个回答
0
投票

似乎问题在于,簇图正在将掩码与数据一起置换。我对此的解决方案是运行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})

我希望这不会太晚。我只是遇到了完全相同的问题,并找到了您的问题。

© www.soinside.com 2019 - 2024. All rights reserved.