【问题标题】:How do i put a mask on this heatmap?如何在此热图上放置遮罩?
【发布时间】:2019-12-01 11:06:51
【问题描述】:

我已经为上面的整个数据集创建了一个热图,但是现在我想为与我的目标变量最相关的 10 个点创建一个热图。我已经打印了数据和掩码的形状,它们都是 10 x 10,但是我得到了这个错误:

ValueError: Mask must have the same shape as the data.

我使用了一个来自 kaggle 的虚拟数据集作为示例。

    corr = training.corr()

    mask = np.zeros_like(corr, dtype=np.bool)
    mask[np.triu_indices_from(mask)] = True

    f, ax = plt.subplots(figsize=(12, 9))

    sns.heatmap(corr, mask=mask,vmin=0.0, vmax=1.0, center=0,
        square=True, linewidths=.5, cbar_kws={"shrink": .5})

我的代码的第一部分(上图)计算了整个数据集的热图,数据的上半部分带有掩码。

    k = 10

    cols = corr.nlargest(k, 'SalePrice')['SalePrice'].index

    cm = np.corrcoef(training[cols].values.T)

    sns.set(font_scale=1.25)

    f, ax = plt.subplots(figsize=(12, 9))

    mask2 = np.zeros_like(cm, dtype=np.bool)
    mask2[np.triu_indices_from(mask2)] = True

    hm = sns.heatmap(cm, vmin=0.0, vmax=1.0, mask=mask, cbar=True, 
    annot=True, square=True, fmt='.2f', annot_kws={'size': 10},
    yticklabels=cols.values, xticklabels=cols.values)

    plt.show()

这应该输出一个上半部分(重复值)被屏蔽的热图。

【问题讨论】:

  • 请发布您的整个代码,我们无法在此处看到您正在使用的内容。

标签: python-3.x pandas numpy visualization seaborn


【解决方案1】:

强调文本已经在我的代码中看到了错误,这归结为一个非常糟糕的错字错误。我已将错误放在“**”中以指示粗体文字书写(我输入了掩码 = 掩码 - 这是先前数据集的掩码,并且形状不同)。谢谢你,如果你正在处理它......也许有一个更短的方法来完成这个代码,所以仍然请分享。

**mask2** = np.zeros_like(cm, dtype=np.bool)
**mask2**[np.triu_indices_from(mask2)] = True

hm = sns.heatmap(cm, vmin=0.0, vmax=1.0, mask=**mask**, cbar=True, 
annot=True, square=True, fmt='.2f', annot_kws={'size': 10},
yticklabels=cols.values, xticklabels=cols.values)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-09-23
    • 2022-10-23
    • 2010-12-05
    • 1970-01-01
    • 1970-01-01
    • 2018-05-29
    • 2016-06-09
    • 2016-01-07
    相关资源
    最近更新 更多