python 热图颜色_Python可视化matplotlib&seborn16相关性heatmap

论坛 期权论坛 编程之家     
选择匿名的用户   2021-5-22 23:40   36   0

"pythonic生物人"的第60篇分享ec7ba36a081382f3a90e7ee7b2677bf5.png21bf235d2ce6e7cf32954bf9819d54e5.png21bf235d2ce6e7cf32954bf9819d54e5.png

  • Python可视化matplotlib&seborn14-热图heatmap
  • Python可视化matplotlib&seborn15-聚类热图clustermap
  • 本文介绍python绘制相关性热图,为以上热图的进阶版。

本文将了解到什么?

0、成品图展示1、数据准备2、seaborn.heatmap绘制correlation heatmap默认参数绘制correlation heatmapvmax设置颜色深浅 cmp参数变换colormap annot、fmt、annot_kws设置格子中文本mask设置部分数据显示3、seaborn.clustermap绘制correlation clustermap 

正文开始啦

0、成品图展示

普通相关性heatmap

a6cd6d4c8a0b0a1e1b6d4c346d8aea55.png

聚类相关性heatmap

3e5a31f3ac1789c1b451d06a70a0b249.png

1、数据准备

关键一步,使用pandas的corr函数生成相关矩阵。

from string import ascii_lettersimport numpy as npimport pandas as pdimport seaborn as snsimport matplotlib.pyplot as pltimport 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个平行的矩阵。07f931c109d28416c5174c9ae4b96833.png经过corr函数变换后 ,变成26x26的方形矩阵。d7865a75aa6755ac7d6066db05e91aaa.png

2、seaborn.heatmap绘制correlation heatmap

默认参数绘制correlation heatmap

plt.figure(figsize=(11, 9),dpi=100)
sns.heatmap(data=dcorr,
)
07c9de708b32fce2d09d5d031eea67cc.png

vmax设置颜色深浅

plt.figure(figsize=(11, 9),dpi=100)
sns.heatmap(data=dcorr,
vmax=0.3, #上图颜色太深,不美观,让整体颜色变浅点
)
504f6eacaca8523626a95252028279aa.png

cmp参数变换colormap

关于colormap可参考:

  • matplotlib中Colormap
  • python Palettable库中Colormap
plt.figure(figsize=(11, 9),dpi=100)
sns.heatmap(data=dcorr,
vmax=0.3,
cmap=palettable.cmocean.diverging.Curl_10.mpl_colors, #换个colormap
)
ad02490db1d2664423931cb6585e1741.png

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'},#数字属性设置,例如字号、磅值、颜色
)
a6206047b9bbad895863e036913266f6.png

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))#显示对脚线下面部分图
)
9b999673efc69962a778ef2c240fd11d.png

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}
)
a6cd6d4c8a0b0a1e1b6d4c346d8aea55.png

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,
)

40264ed3951bb9a66fc23296fedc53ef.png注意左上方分类条

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,# 图放大缩小
)
119d6ef521379c7104eb50562840eafe.png

相关性热图(correlation heatmap& correlation clustermap)是heatmap和clustermap的变种,更多参数设置请戳:

  • Python可视化matplotlib&seborn14-热图heatmap
  • Python可视化matplotlib&seborn15-聚类热图clustermap

ec7ba36a081382f3a90e7ee7b2677bf5.pngec7ba36a081382f3a90e7ee7b2677bf5.png原创不易"点赞"、"在看"906781f07da2b09a63d3e511ed0c73f2.png励下呗1026bbfe9fd74a4898aebefc7ffca00a.png1c7a505cd2cfce2af33de0feb7c4d4c3.pngf80b46d074d7b25bfa6bf54a2515297c.png

分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:3875789
帖子:775174
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP