热图相关图在seaborn中具有值数字和半颜色图的一半

时间:2016-08-18 09:43:19

标签: python heatmap correlation seaborn

在先前版本的seaborn(< 0.7)中,它出现了函数 corrplot(),它允许绘制相关矩阵,使得矩阵的一半是数字,另一半是彩色地图。现在,seaborn(0.7.1)只有 heatmap()函数,它没有直接使用这个函数。有没有办法获得相同的结果?

1 个答案:

答案 0 :(得分:2)

我花了一些时间来完成它,基本上它需要重叠两个热图,其中一个使用掩模覆盖矩阵的一半。代码示例如下所示。

import numpy as np
import pandas as pd
import seaborn
from matplotlib.colors import ListedColormap
from matplotlib.pylab import *

arr_name = ['D','S','P','E','C','KW','K','EF']
data = np.random.randn(8,8)
df = pd.DataFrame(data, columns=arr_name)
labels = df.where(np.triu(np.ones(df.shape)).astype(np.bool))
labels = labels.round(2)
labels = labels.replace(np.nan,' ', regex=True)

mask = np.triu(np.ones(df.shape)).astype(np.bool)
ax = seaborn.heatmap(df, mask=mask, cmap='RdYlGn_r', fmt='', square=True, linewidths=1.5)
mask = np.ones((8, 8))-mask
ax = seaborn.heatmap(df, mask=mask, cmap=ListedColormap(['white']),annot=labels,cbar=False, fmt='', linewidths=1.5)
ax.set_xticks([])
ax.set_yticks([])
plt.show()

最终结果如下: enter image description here