使用预计算距离相关矩阵的Seaborn clustermap问题

2024-04-19 01:11:22 发布

您现在位置:Python中文网/ 问答频道 /正文

我是:

然后我想:

  • (B)使用我自己的数据使用两个数据帧执行相同的操作。在

我直接向sns.clustermap提供距离相关性,就像在文档示例中所做的那样,因为我对热图中的结构感兴趣,而不是像在this SO answer中那样使用距离相关矩阵来计算链接。我用这个excellent SO answer代码的修改创建了距离校正矩阵。在

  • (A)这里没有问题

当我执行:

distcorr = lambda column1, column2: dcor.distance_correlation(column1, column2)
dcor_df= df.apply(lambda col1: df.apply(lambda col2: distcorr(col1, col2)))
sns.clustermap(dcor_df, cmap="mako",
               row_colors=network_colors, col_colors=network_colors,
               linewidths=.75, figsize=(13, 13))

我得到了我预期的结果:

enter image description here

  • (B)在我转移到自己的数据时,我确实遇到了一些问题

对于一些背景:我有两个数据帧,两个数据帧中都有标记为A, B, ..., P的变量。变量是相同的(相同的测量值,相同的单位),但是测量值是在空间上分开的两个位置收集的,因此我的目标是分开进行分析,看看不同位置的变量是否以类似的方式(即,与热图中的相似结构)相关。在

来自第一个位置的数据存储在here。在

我执行以下代码:

^{pr2}$

我得到了期望的(平方,对称)距离相关矩阵: enter image description here我可以用sns.heatmap绘制为:

^{3}$

enter image description here

但是,当我试图将距离相关矩阵传递给`sns.clustermap'与:

s=sns.clustermap(rslt_1, cmap="mako", standard_scale=1, linewidths=0) 
fig = plt.gcf()
fig.set_size_inches(10, 10);

我明白了:

enter image description here

这对我来说很奇怪,因为我希望行和列的顺序与上面修改过的文档示例中的顺序相同。除非我出去吃午饭,错过或误解了重要的事情。在

如果我像这样通过metric='correlation'

s=sns.clustermap(rslt_1, cmap="mako", metric='correlation', 
             standard_scale=1, linewidths=0) 
fig = plt.gcf()
fig.set_size_inches(10, 10);

我得到了一个与对角线对称的结果,如果我“注意”了这些簇,当我以表格形式与矩阵进行比较时,它们对我更有意义: enter image description here

对于存储在here的第二个位置的数据,无论我是否通过metric='correlation',我都会得到合理的结果(而且相当相似,尽管不完全相同): final

我无法解释第一个案例中的行为。我是否遗漏了什么?在

谢谢。在

PS我使用的是Windows 10电脑。 一些信息:

enter image description hereenter image description here


Tags: 数据lambda文档距离示例dfmakofig