【问题标题】:seaborn clustermap does not rearrange annotation dataseaborn clustermap 不会重新排列注释数据
【发布时间】:2019-12-28 14:37:12
【问题描述】:

我正在使用 seaborn 从矩阵中绘制集群图,并且我希望矩阵的值成为集群图的注释。然而,虽然 clustermap 重新排列数据矩阵的行和列以形成集群,但它不会对注释矩阵这样做。

这是我的代码:

data = np.random.rand(10,5)
print (data)

 [[0.62906695 0.41046601 0.04774079 0.98012573 0.79686483]
 [0.1618218  0.70365808 0.53644302 0.68291708 0.95152119]
 [0.901431   0.19378611 0.33176554 0.00219459 0.92936903]
 [0.1575622  0.37749714 0.88975381 0.16945422 0.23790588]
 [0.06837024 0.49287138 0.60866541 0.80563271 0.38924653]
 [0.13671484 0.11410341 0.14604541 0.49899899 0.82850949]
 [0.90237875 0.23954254 0.41614074 0.11811778 0.26017433]
 [0.27881206 0.09321617 0.62520404 0.10796313 0.12266986]
 [0.27606845 0.8479972  0.86467503 0.19660883 0.11909075]
 [0.64211049 0.61860723 0.70426254 0.24465052 0.17614033]]

df = pd.DataFrame(data, columns=['A','B','C','D','E']).corr()
df

          A         B         C         D         E
A  1.000000 -0.229103 -0.353145 -0.360782  0.084730
B -0.229103  1.000000  0.498165  0.256117 -0.162689
C -0.353145  0.498165  1.000000 -0.443952 -0.727170
D -0.360782  0.256117 -0.443952  1.000000  0.448025
E  0.084730 -0.162689 -0.727170  0.448025  1.000000


sns.clustermap(data=df, annot=df)

如图所示,注解与原df相同,并没有按照图中的簇进行排列。

有什么方法可以让我正确地做到这一点吗?

【问题讨论】:

  • 我认为你把事情搞砸了。 data 是一个用于聚类的矩形数据。您可以使用参数metric 选择用于数据的距离度量。见docs
  • 不,我知道metric,但这并不重要。我只是希望 clustermap 上的注释顺序与地图本身保持一致。

标签: python seaborn


【解决方案1】:

您是手动设置注释,只需使用

sns.clustermap(data=df, annot=True)  

【讨论】:

  • 如果我想将annot 设置为df 以外的其他数据帧呢?
  • @sisaman 注释基本上是传递给热图的,所以只要确保地图和注释的尺寸(你也可以传递 numpy 数组)是相同的,那么无论你传递什么它都应该工作annot=other_df
  • 例如考虑annot=df**2
  • 我同意@sisman:如果您使用自定义注释,则注释不会以与 annot 设置为 True 时原始数据相同的方式重新排序。
  • Nvm, they fixed it 在最近的版本中。
猜你喜欢
  • 2015-09-12
  • 2019-10-09
  • 1970-01-01
  • 2020-11-26
  • 2016-04-06
  • 2015-12-28
  • 2023-01-10
  • 2017-01-02
  • 2012-10-12
相关资源
最近更新 更多