本文将了解到什么?
0、成品图展示
1、数据准备
2、seaborn.heatmap绘制correlation heatmap
默认参数绘制correlation heatmap
vmax设置颜色深浅
cmp参数变换colormap
annot、fmt、annot_kws设置格子中文本
mask设置部分数据显示
3、seaborn.clustermap绘制correlation clustermap
0、成品图展示
普通相关性heatmap
image
聚类相关性heatmap
image
1、数据准备
关键一步,使用pandas的corr函数生成相关矩阵。
from string import ascii_letters
import numpy as np
import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt
import palettable
# 生成随机数
rs = np.random.RandomState(33)#类似np.random.seed,即每次括号中的种子33不变,每次可获得相同的随机数
d = pd.DataFrame(data=rs.normal(size=(100, 26)),#normal生成高斯分布的概率密度随机数,需要在变量rs下使用
columns=list(ascii_letters[26:]))
# corr函数计算相关性矩阵(correlation matrix)
dcorr = d.corr(method='pearson')#默认为'pearson'检验,可选'kendall','spearman'
简单看下原始数据集,如下:可以简单理解为一个具有26个变量(A-Z),每个变量具有100个平行的矩阵。
image
经过corr函数变换后 ,变成26x26的方形矩阵。
image
2、seaborn.heatmap绘制correlation heatmap
默认参数绘制correlation heatmap
plt.figure(figsize=(11, 9),dpi=100)
sns.heatmap(data=dcorr,
)
image
vmax设置颜色深浅
plt.figure(figsize=(11, 9),dpi=100)
sns.heatmap(data=dcorr,
vmax=0.3, #上图颜色太深,不美观,让整体颜色变浅点
)
image
cmp参数变换colormap
关于colormap可参考:
plt.figure(figsize=(11, 9),dpi=100)
sns.heatmap(data=dcorr,
vmax=0.3,
cmap=palettable.cmocean.diverging.Curl_10.mpl_colors, #换个colormap
)
image
annot、fmt、annot_kws设置格子中文本
plt.figure(figsize=(11, 9),dpi=100)
sns.heatmap(data=dcorr,
vmax=0.3,
cmap=palettable.cmocean.diverging.Curl_10.mpl_colors,
annot=True,#图中数字文本显示
fmt=".2f",#格式化输出图中数字,即保留小数位数等
annot_kws={'size':8,'weight':'normal', 'color':'#253D24'},#数字属性设置,例如字号、磅值、颜色
)
image
mask设置部分数据显示
plt.figure(figsize=(11, 9),dpi=100)
sns.heatmap(data=dcorr,
vmax=0.3,
cmap=palettable.cmocean.diverging.Curl_10.mpl_colors,
annot=True,
fmt=".2f",
annot_kws={'size':8,'weight':'normal', 'color':'#253D24'},
mask=np.triu(np.ones_like(dcorr,dtype=np.bool))#显示对脚线下面部分图
)
image
square、linewidths、 cbar_kws设置方格外框、图例设置
plt.figure(figsize=(11, 9),dpi=100)
sns.heatmap(data=dcorr,
vmax=0.3,
cmap=palettable.cmocean.diverging.Curl_10.mpl_colors,
annot=True,
fmt=".2f",
annot_kws={'size':8,'weight':'normal', 'color':'#253D24'},
mask=np.triu(np.ones_like(dcorr,dtype=np.bool)),#显示对脚线下面部分图
square=True, linewidths=.5,#每个方格外框显示,外框宽度设置
cbar_kws={"shrink": .5}
)
image
3、seaborn.clustermap绘制correlation clustermap
plt.figure(figsize=(11, 9),dpi=100)
sns.clustermap(data=dcorr,
vmax=0.3,
cmap=palettable.cmocean.diverging.Curl_10.mpl_colors,
linewidths=.75,
)
image注意左上方分类条
row_c = dict(zip(list(ascii_letters[26:]), plt.get_cmap('RdPu')(np.linspace(0, 1, 26))))
index_c = dict(zip(list(ascii_letters[26:]), plt.get_cmap('RdPu')(np.linspace(0, 1, 26))))
sns.set(style="ticks")
plt.figure(figsize=(13, 13))
sns.clustermap(data=dcorr,
vmax=0.3,
cmap=palettable.cmocean.diverging.Curl_10.mpl_colors,
linewidths=.75,
row_colors=pd.Series(dcorr.columns.get_level_values(None), index=dcorr.columns).map(row_c), #行方向聚类用颜色区分不同类
col_colors=pd.Series(dcorr.columns.get_level_values(None), index=dcorr.columns).map(index_c),
dendrogram_ratio=0.15,# 图放大缩小
)
image
相关性热图(correlation heatmap& correlation clustermap)是heatmap和clustermap的变种,更多参数设置请戳: