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

本文介绍了如何使用Python的seaborn库绘制相关性热图和聚类热图,包括数据准备、heatmap和clustermap的参数设置,如颜色、文本、方格外框等,并展示了示例成品图。
摘要由CSDN通过智能技术生成

"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
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值