最近在建模时有绘制相关系数矩阵热力图的需要,在此记录一下热力图的基本使用
这里使用seaborn库中的的heatmap完成热力图的绘制,我们可以根据图中不同方块颜色来判断变量之间相关系数的大小,接下来介绍heatmap的使用和参数
heatmap(data, vmin=None, vmax=None, cmap=None, center=None, annot=None, fmt='.2g',
annot_kws=None, linewidths=0, linecolor='white', cbar=True, cbar_kws = None,
square=False, xticklabels='auto', yticklabels='auto', mask=None, ax=None)
详细参见 https://matplotlib.org/2.0.2/examples/color/colormaps_reference.html
接下来对某物品所含化学成分进行相关性分析
源数据
代码实现
import numpy as np
import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt
import os
os.chdir(r'E:\Code\建模')
data = pd.read_excel(r"data.xlsx")
m,n = data.shape
data = data.iloc[0:m+1,1:]
# 计算相关系数矩阵
data = data.corr()
#处理中文乱码
plt.rcParams['font.sans-serif'] = ['SimHei']
#坐标轴负号的处理
plt.rcParams['axes.unicode_minus']=False
mask=np.zeros_like(data)
for i in range(1,len(mask)):
for j in range(0,i):
mask[j][i]=True
# 设置下三角mask遮罩,上三角将i,j互换即可
sns.heatmap(data = data, mask=mask, cmap='RdBu', vmax=1, vmin =-1,center=0,annot=True,square=True,linewidths=0,
cbar_kws={"shrink":.6},xticklabels=True,yticklabels=True,fmt='.2f')
# center 值越大颜色越浅
# shrink:n n为缩短的比例(0-1)
# fmt='.2f' 显示数字保留两位小数
plt.title('热力图',fontsize='xx-large',fontweight='heavy')
# 设置标题字体
plt.show()
结果及分析
数字绝对值越大颜色越深,代表相关联程度越大