首页 > 解决方案 > 从 seaborn.heatmap 中的图中删除蒙面项目

问题描述

如果seaborn使用该mask选项遮盖热图中的某些元素,则遮罩会在图形顶部绘制空白区域,如本快速示例中所示。

# generate some random data
x = [np.random.rand() for x in range(0,20)]
y = [np.random.rand() for y in x]
data = pd.DataFrame([x,y]) # cast it into a dataframe
corr = data.corr() # get the correlation values


# generate a mask
mask = []
l = [True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, False, False]
for i in range(0,10):
    mask.append([True for x in range(0,20)])
for i in range(0,10):
    mask.append(l)
mask = np.array(mask)

sb.heatmap(corr,mask=mask)

在此处输入图像描述

有没有办法绘制图像,以便从图中删除蒙版区域,使其看起来更像以下内容:

在此处输入图像描述

标签: pythonmatplotlibseabornmask

解决方案


mask您可以从整个数据框中删除所有列和行True

masked_corr = corr.loc[~np.all(mask, axis=1), ~np.all(mask, axis=0)]
sns.heatmap(masked_corr)

会产生

在此处输入图像描述


推荐阅读