为了账号安全,请及时绑定邮箱和手机立即绑定

如何保持sns.heatmap的对角线中的那些?

如何保持sns.heatmap的对角线中的那些?

温温酱 2021-11-23 16:58:04
我想用 sns.heatmap 绘制相关矩阵并有一些问题。这是我的代码:plt.figure(figsize=(8,8))mask =np.zeros_like(data.corr())mask[np.triu_indices_from(mask)] = Truesns.heatmap(data.corr(), mask=mask, linewidth=1, annot=True, fmt=".2f",cmap='coolwarm',vmin=-1, vmax=1)plt.show()这就是我得到的:[相关矩阵][1][1]:https : //i.stack.imgur.com/DX2oN.png \现在我有一些问题:1)我怎样才能保持对角线中的那些?2)如何改变x轴的位置?3)我希望颜色条从 1 变为 -1,但代码不起作用我希望有人能帮帮忙。谢谢
查看完整描述

2 回答

?
SMILET

TA贡献1796条经验 获得超4个赞

我认为你必须检查data.corr(),因为你的代码是正确的,并给出了诊断(见下文)。一个问题是:您使用np.triu但您显示的图片显示 np.tirl。


这是我测试过的代码 - 对角线在那里:


N = 5

A = np.arange(N*N).reshape(N,N)


B = np.tril(A)


mask =np.zeros_like(A)

mask[np.triu_indices_from(mask)] = True


print('A'); print(A); print()

print('tril(A)'); print(B); print()

print('mask'); print(mask); print()


A

[[ 0  1  2  3  4]

 [ 5  6  7  8  9]

 [10 11 12 13 14]

 [15 16 17 18 19]

 [20 21 22 23 24]]


tril(A)

[[ 0  0  0  0  0]

 [ 5  6  0  0  0]

 [10 11 12  0  0]

 [15 16 17 18  0]

 [20 21 22 23 24]]


mask

[[1 1 1 1 1]

 [0 1 1 1 1]

 [0 0 1 1 1]

 [0 0 0 1 1]

 [0 0 0 0 1]]

编辑:补充


你可以重新调整面具,例如


C = A *mask

D = np.where(C > 1, 1,C)

print('D'); print(D)


D

[[0 1 1 1 1]

 [0 1 1 1 1]

 [0 0 1 1 1]

 [0 0 0 1 1]

 [0 0 0 0 1]]

D 的对角线的第一个元素现在是零,因为 A 的对角线的第一个元素也是零。


编辑:补充2


F = np.tril(A,-1)

E = np.eye(N)

G = E + F


print('F'); print(F); print()

print('E'); print(E); print()

print('G'); print(G); print()


F

[[ 0  0  0  0  0]

 [ 5  0  0  0  0]

 [10 11  0  0  0]

 [15 16 17  0  0]

 [20 21 22 23  0]]


E

[[1. 0. 0. 0. 0.]

 [0. 1. 0. 0. 0.]

 [0. 0. 1. 0. 0.]

 [0. 0. 0. 1. 0.]

 [0. 0. 0. 0. 1.]]


G

[[ 1.  0.  0.  0.  0.]

 [ 5.  1.  0.  0.  0.]

 [10. 11.  1.  0.  0.]

 [15. 16. 17.  1.  0.]

 [20. 21. 22. 23.  1.]]


查看完整回答
反对 回复 2021-11-23
?
繁花不似锦

TA贡献1851条经验 获得超4个赞

x轴位置的变化

由于我对 seaborn 没有经验,我会使用 matplotlib 来绘制热图(此处为示例),然后使用 matplotlibtwinx()twiny()将轴放置在您想要的位置(此处为示例)。

(我认为这也可以用 seaborn 来完成 - 我只是不知道)


查看完整回答
反对 回复 2021-11-23
  • 2 回答
  • 0 关注
  • 348 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信