从集群图中删除标准比例参数。
s=sns.clustermap(rslt_1, cmap="mako", metric='correlation', linewidths=0)
我是:
pandas.DataFrame.corr
,仅限于线性或等级系数。然后我要:
我按照文档示例中的说明直接向sns.clustermap
提供了距离相关性,因为我对热图中的结构感兴趣,而不是像this SO answer中那样使用距离相关性矩阵来计算链接。 , 例如。我使用此excellent SO answer的代码修改来创建距离校正矩阵。
我执行时:
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))
我得到了我期望的结果:
[对于某些背景:我有两个带有两个标记为A, B, ..., P
的变量的DataFrames。变量是相同的(相同的度量,相同的单位),但是度量是在空间上分开的两个位置收集的,因此我的目标是分别运行分析,以查看变量是否以相似的方式关联(即具有相似的结构)在热图上)。
来自第一个位置的数据存储在here中。
我执行以下代码:
df_1 = pd.read_csv('df_1.csv') pd.options.display.float_format = '{:,.3f}'.format distcorr = lambda column1, column2: dcor.distance_correlation(column1, column2) rslt_1 = df_1.apply(lambda col1: df_1.apply(lambda col2: distcorr(col1, col2))) rslt_1
并且我得到了预期的(正方形,对称的)距离相关矩阵:我可以用绘制为
sns.heatmap
:h=sns.heatmap(rslt_1, cmap="mako", vmin=0, vmax=1, xticklabels=True, yticklabels=True, square=True) fig = plt.gcf() fig.set_size_inches(14, 10)
但是,当我尝试通过以下方式将距离相关矩阵传递给“ sns.clustermap”时:
s=sns.clustermap(rslt_1, cmap="mako", standard_scale=1, linewidths=0) fig = plt.gcf() fig.set_size_inches(10, 10);
我明白了:
这对我来说很奇怪,因为我期望行和列的排序与上述修改后的文档示例中的排序相同。除非我完全不出去吃午饭,或者想念或误解一些重要的东西。
如果我像这样通过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);
我得到的结果与对角线对称,正如我所期望的,如果我“眼球”这些簇,那么在与表格形式的矩阵进行比较时,它们对我来说更有意义:
使用第二个位置的数据存储here,无论是否通过
metric='correlation'
,我都会得到合理的结果(虽然不完全相同,但相当相似):我无法解释第一种情况下的行为。 我想念什么吗?>?
谢谢。
PS
我在Windows 10 PC上。一些信息:我:(A)运行Seaborn文档中的示例,发现热图数据中的结构,但使用dcor库中的距离关联,而不是pandas.DataFrame.corr,其中...
从集群图中删除标准比例参数。
s=sns.clustermap(rslt_1, cmap="mako", metric='correlation', linewidths=0)
从集群图中删除标准比例参数。
s=sns.clustermap(rslt_1, cmap="mako", metric='correlation', linewidths=0)