数据可视化python热力图(seaborn.heatmap)(代码片段)

ZSYL ZSYL     2022-12-04     562

关键词:

热力图

以特殊高亮的形式显示访客热衷的页面区域和访客所在的地理区域的图示。热力图可以显示不可点击区域发生的事情。城市热力图该检测方式只提供参考。

你将发现访客经常会点击那些不是链接的地方,也许你应该在那个地方放置一个资源链接。比如:如果你发现人们总是在点击某个产品图片,你能想到的是,他们也许想看大图,或者是想了解该产品的更多信息。 同样,他们可能会错误地认为特别的图片就是导航链接。
------百度百科

  • 热力图:关系型数据的可视化。

  • 热力图:体现了两个离散变量之间的组合关系.

  • 热力图:有时也称之为交叉填充表.

该图形最典型的用法就是实现列联表的可视化,即通过图形的方式展现两个离散变量之间的组合关系。

利用热力图可以看数据表里多个特征两两的相似度。

我们可以借助于seaborn模块中的heatmap函数,完成热力图的绘制。

首先对该函数的用法及参数含义做如下解释:

seaborn.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)
  • data:指定绘制热力图的数据集。

data可以是numpy的数组(array),也可以是pandas的DataFrame。如果是DataFrame,则df的index/column信息会分别对应到heatmap的columns和rows,即df.index是热力图的行标,df.columns是热力图的列标

  • vmin,vmax:用于指定图例中最小值与最大值的显示值,默认是根据data数据表里的取值确定。
  • cmap:指定一个colormap对象,用于热力图的填充色。

cmap:从数字到色彩空间的映射,取值是matplotlib包里的colormap名称或颜色对象,或者表示颜色的列表;改参数默认值:根据center参数设定

  • center:指定颜色中心值,通过该参数可以调整热力图的颜色深浅。

center:数据表取值有差异时,设置热力图的色彩中心对齐值;通过设置center值,可以调整生成的图像颜色的整体深浅;设置center数据时,如果有数据溢出,则手动设置的vmax、vmin会自动改变。

  • robust:默认取值False;如果是False,且没设定vmin和vmax的值,热力图的颜色映射范围根据具有鲁棒性的分位数设定,而不是用极值设定.
  • annot(annotate):指定一个bool类型的值或与data参数形状一样的数组,如果为True,就在热力图的每个单元上显示数值。

默认取值False;如果是True,在热力图每个方格写入数据;如果是矩阵,在热力图每个方格写入该矩阵对应位置数据

  • fmt:指定单元格中数据的显示格式。

字符串格式代码,矩阵上标识数字的数据格式,比如保留小数点后几位数字

  • annot_kws:有关单元格中数值标签的其他属性描述,如颜色、大小等。

默认取值False;如果是True,设置热力图矩阵上数字的大小颜色字体,matplotlib包text类下的字体设置;

  • linewidths:指定每个单元格的边框宽度。

定义热力图里“表示两两特征关系的矩阵小块”之间的间隔大小

  • linecolor:指定每个单元格的边框颜色。

切分热力图上每个矩阵小块的线的颜色,默认值是’white’

  • cbar:bool类型参数,是否用颜色条作为图例,默认为True。

是否在热力图侧边绘制颜色刻度条,默认值是True

  • square:bool类型参数,是否使热力图的每个单元格为正方形,默认为False。

square:设置热力图矩阵小块形状,默认值是False

  • cbar_kws:有关颜色条的其他属性描述。

热力图侧边绘制颜色刻度条时,相关字体设置,默认值是None

  • cbar_ax:热力图侧边绘制颜色刻度条时,刻度条位置设置,默认值是None
  • xticklabels,yticklabels:指定热力图x轴和y轴的刻度标签,如果为True,则分别以数据框的变量名和行名称作为刻度标签。

xticklabels控制每列标签名的输出;yticklabels控制每行标签名的输出。默认值是auto。如果是True,则以DataFrame的列名作为标签名。如果是False,则不添加行标签名。如果是列表,则标签名改为列表中给的内容。如果是整数K,则在图上每隔K个标签进行一次标注。 如果是auto,则自动选择标签的标注间距,将标签名不重叠的部分(或全部)输出

  • mask:用于突出显示某些数据。

控制某个矩阵块是否显示出来。默认值是None。如果是布尔型的DataFrame,则将DataFrame里True的位置用白色覆盖掉

  • ax:用于指定子图的位置。

设置作图的坐标轴,一般画多个子图时需要修改不同的子图的该值

  • **kwargs:All other keyword arguments are passed to ax.pcolormesh

cmap

热力图矩阵块颜色参数

#cmap(颜色)
 
import matplotlib.pyplot as plt
import seaborn as sns
% matplotlib inline
 
f, (ax1,ax2) = plt.subplots(figsize = (6,4),nrows=2)
 
# cmap用cubehelix map颜色
cmap = sns.cubehelix_palette(start = 1.5, rot = 3, gamma=0.8, as_cmap = True)
pt = df.corr()   # pt为数据框或者是协方差矩阵
sns.heatmap(pt, linewidths = 0.05, ax = ax1, vmax=900, vmin=0, cmap=cmap)
ax1.set_title('cubehelix map')
ax1.set_xlabel('')
ax1.set_xticklabels([]) #设置x轴图例为空值
ax1.set_ylabel('kind')
 
# cmap用matplotlib colormap
sns.heatmap(pt, linewidths = 0.05, ax = ax2, vmax=900, vmin=0, cmap='rainbow') 
# rainbow为 matplotlib 的colormap名称
ax2.set_title('matplotlib colormap')
ax2.set_xlabel('region')
ax2.set_ylabel('kind')

在这里插入图片描述

center

#center的用法(颜色)
 
f, (ax1,ax2) = plt.subplots(figsize = (6, 4),nrows=2)
 
cmap = sns.cubehelix_palette(start = 1.5, rot = 3, gamma=0.8, as_cmap = True)
sns.heatmap(pt, linewidths = 0.05, ax = ax1, cmap=cmap, center=None )
ax1.set_title('center=None')
ax1.set_xlabel('')
ax1.set_xticklabels([]) #设置x轴图例为空值
ax1.set_ylabel('kind')
 
# 当center设置小于数据的均值时,生成的图片颜色要向0值代表的颜色一段偏移
sns.heatmap(pt, linewidths = 0.05, ax = ax2, cmap=cmap, center=200)   
ax2.set_title('center=3000')
ax2.set_xlabel('region')
ax2.set_ylabel('kind')

在这里插入图片描述

#cmap(颜色)
import matplotlib.pyplot as plt
import seaborn as sns
import numpy as np
import pandas as pd
# % matplotlib inline
# df = pd.DataFrame('value1': np.random.randint(1, 100, 100), 'value2':np.random.randint(10000, 100000, 100))
df = np.random.randint(1, 1000, (10, 10))

f, (ax1,ax2) = plt.subplots(figsize = (20,8),nrows=2)
 
# cmap用cubehelix map颜色
cmap = sns.cubehelix_palette(start = 1.5, rot = 3, gamma=0.8, as_cmap = True)
# pt = df.corr()   # pt为数据框或者是协方差矩阵
pt = df

sns.heatmap(pt, linewidths = 0.05, ax = ax1, vmax=900, vmin=0, cmap=cmap)
ax1.set_title('cubehelix map')
ax1.set_xlabel('')
ax1.set_xticklabels([]) #设置x轴图例为空值
ax1.set_ylabel('kind')

# cmap用matplotlib colormap
sns.heatmap(pt, linewidths = 0.05, ax = ax2, vmax=900, vmin=0, cmap='rainbow') 
# rainbow为 matplotlib 的colormap名称
ax2.set_title('matplotlib colormap')
ax2.set_xlabel('region')
ax2.set_ylabel('kind')

plt.show()

在这里插入图片描述

annot

annot_kws

热力图矩阵块注释参数

#annot(矩阵上数字),annot_kws(矩阵上数字的大小颜色字体)matplotlib包text类下的字体设置
 
import numpy as np
np.random.seed(20180316)
x = np.random.randn(4, 4)
 
f, (ax1, ax2) = plt.subplots(figsize=(20,8),nrows=2)  # subplots:分割画布,nrows:分几行即几个画布,返回列表
 
sns.heatmap(x, annot=True, ax=ax1)
 
sns.heatmap(x, annot=True, ax=ax2, annot_kws='size':9,'weight':'bold', 'color':'blue')
# Keyword arguments for ax.text when annot is True.  http://stackoverflow.com/questions/35024475/seaborn-heatmap-key-words
plt.show()

在这里插入图片描述

fmt

#fmt(字符串格式代码,矩阵上标识数字的数据格式,比如保留小数点后几位数字)

import numpy as np
np.random.seed(0)
x = np.random.randn(4,4)
 
f, (ax1, ax2) = plt.subplots(figsize=(20,8),nrows=2)
 
sns.heatmap(x, annot=True, ax=ax1)
 
sns.heatmap(x, annot=True, fmt='.1f', ax=ax2)
plt.show()

在这里插入图片描述

linewidths

linecolor

热力图矩阵块之间间隔及间隔线参数

#linewidths(矩阵小块的间隔),linecolor(切分热力图矩阵小块的线的颜色) 
import matplotlib.pyplot as plt
f, ax = plt.subplots(figsize = (20,8))
cmap = sns.cubehelix_palette(start = 1, rot = 3, gamma=0.8, as_cmap = True)   
sns.heatmap(pt, cmap = cmap, linewidths = 0.05, linecolor= 'red', ax = ax)   
ax.set_title('Amounts per kind and region')
ax.set_xlabel('region')
ax.set_ylabel('kind')
plt.show()

在这里插入图片描述

xticklabels

yticklabels

#xticklabels,yticklabels横轴和纵轴的标签名输出
 
import matplotlib.pyplot as plt
f, (ax1,ax2) = plt.subplots(figsize = (5,5),nrows=2)
 
cmap = sns.cubehelix_palette(start = 1.5, rot = 3, gamma=0.8, as_cmap = True)
 
p1 = sns.heatmap(pt, ax=ax1, cmap=cmap, center=None, xticklabels=False)
ax1.set_title('xticklabels=None',fontsize=8)
 
p2 = sns.heatmap(pt, ax=ax2, cmap=cmap, center=None, xticklabels=2, yticklabels=list(range(5))) 
ax2.set_title('xticklabels=2, yticklabels is a list',fontsize=8)
ax2.set_xlabel('region')

在这里插入图片描述

mask

#mask对某些矩阵块的显示进行覆盖
 
f, (ax1,ax2) = plt.subplots(figsize = (5,5),nrows=2)
 
cmap = sns.cubehelix_palette(start = 1.5, rot = 3, gamma=0.8, as_cmap = True)
 
p1 = sns.heatmap(pt, ax=ax1, cmap=cmap, xticklabels=False, mask=None)
ax1.set_title('mask=None')
ax1.set_ylabel('kind')
 
p2 = sns.heatmap(pt, ax=ax2, cmap=cmap, xticklabels=True, mask=(pt<800))   
#mask对pt进行布尔型转化,结果为True的位置用白色覆盖
ax2.set_title('mask: boolean DataFrame')
ax2.set_xlabel('region')
ax2.set_ylabel('kind')

在这里插入图片描述
mask实现:突出显示某些数据

f,(ax1,ax2) = plt.subplots(figsize=(4,6),nrows=2)
x = np.array([[1,2,3],[2,0,1],[-1,-2,0]])
sns.heatmap(x, annot=True, ax=ax1)
sns.heatmap(x, mask=x < 1, ax=ax2, annot=True, annot_kws="weight": "bold")   #把小于1的区域覆盖掉

在这里插入图片描述

热力图应用

参考【球迷福利】NBA球员数据分析

球员效率值相关分析中,在众多的数据中,有一项名为“RPM”,标识球员的效率值,该数据反映球员在场时对球队比赛获胜的贡献大小,最能反映球员的综合实力。

我们来看一下它与其他数据的相关性

data_cor = data.loc[:, ['RPM', 'AGE', 'SALARY_MILLIONS', 'ORB', 'DRB', 'TRB',
                       'AST', 'STL', 'BLK', 'TOV', 'PF', 'POINTS', 'GP', 'MPG', 'ORPM', 'DRPM']]
data_cor.head()

在这里插入图片描述
获取两列数据之间的相关性

# 获取两列数据之间的相关性
corr = data_cor.corr()
corr.head()

在这里插入图片描述

dat_cor = data.loc[:, ['RPM', 'AGE', 'SALARY_MILLIONS', 'ORB', 'DRB', 'TRB',
                       'AST', 'STL', 'BLK', 'TOV', 'PF', 'POINTS', 'GP', 'MPG', 'ORPM', 'DRPM']]
coor = dat_cor.corr()
sns.heatmap(coor, square=True, linewidths=0.02, annot=True)
# annot-是否在热力图中显示数据
# seaborn中的heatmap函数,是将多维度数值变量按数值大小进行交叉热图展示。

plt.show()

在这里插入图片描述
相关性分析heatmap图可以看出,RPM值年龄的相关性最弱,与“进攻效率值-ORPM”、“场均得分-POINTS”、“场均抢断数-STL”等比赛技术数据的相关性最强。

加油!

感谢!

努力!

python可视化lassocv特征筛选之后的特征的相关性分析热力图

python可视化lassocv特征筛选之后的特征的相关性分析热力图目录python可视化lassocv特征筛选之后的特征的相关性分析热力图#lassocv模型 查看详情

r使用热力图(heatmap)可视化数据集(代码片段)

R使用热力图(heatmap)可视化数据集R使用热力图(heatmap)可视化数据集#安装、加载包install.packages(\'RNHANES\')library(RNHANES)library(tidyverse)******************************************************************************Warningmes 查看详情

r可视化使用ggplot2创建样本数据热力图(heatmap)

R可视化使用ggplot2创建样本数据热力图(heatmap)目录R可视化使用ggplot2创建样本数据热力图(heatmap)数据加载及变形 查看详情

数据可视化:pandas透视图、seaborn热力图

参考技术A输出:ref: 查看详情

r语言ggplot2可视化:可视化时间序列日历热力图日历热力图可以很好地描绘极端值和节日数据特性(calendarheatmap)例如日历上看到股票价格这样的指标的变化,尤其是高点和低点数据

R语言ggplot2可视化:可视化时间序列日历热力图、日历热力图可以很好地描绘极端值和节日数据特性(CalendarHeatmap)、例如、日历上看到股票价格这样的指标的变化,尤其是高点和低点数据目录 查看详情

可视化神器plotly绘制热力图(代码片段)

公众号:尤而小屋作者:Peter编辑:Peter大家好,我是Peter~之前更新了很多关于Plotly绘图的文章。今天带来的文章是基于官网和实际案例来讲解如何绘制不同需求下的热力图。Plotly中绘制热力图有3种方式:heatma... 查看详情

数据可视化之seaborn热力图参数详解(很多例子)(代码片段)

defheatmap(data,vmin=None,vmax=None,cmap=None,center=None,robust=False,annot=None,fmt=".2g",annot_kws=None,linewidths=0,linecolor="white",cbar&# 查看详情

数据可视化之seaborn热力图参数详解(很多例子)(代码片段)

defheatmap(data,vmin=None,vmax=None,cmap=None,center=None,robust=False,annot=None,fmt=".2g",annot_kws=None,linewidths=0,linecolor="white",cbar&# 查看详情

.可视化数据分析图表—常用图表的绘制3—散点图,面积图,热力图(代码片段)

第五章.可视化数据分析图5.3常用图表的绘制3—散点图,面积图,热力图本节主要介绍常用图表的绘制,主要包括散点图,面积图,热力图。1.散点图(matplotlib.pyplot.scatter)·散点图主要用来查看数据的... 查看详情

r语言ggplot2可视化热力图(heatmap)自定义配置图例标签为百分比进行热力图颜色渐变显示(legendtodisplaypercentagesign)

R语言ggplot2可视化热力图(heatmap)、自定义配置图例标签为百分比进行热力图颜色渐变显示(legendtodisplaypercentagesign)目录 查看详情

yolov7yolov5改进之打印热力图可视化:适用于自定义模型,丰富实验数据

查看详情

pytorch可视化热力图(代码片段)

 可视化热力图可以有两种方式:1)特征图可视化,将各通道特征的最大值作为热力图像素值,进行可视化——可以参考博客,一种比较灵活的特征图保存方式2)根据梯度值结合特征图计算热力图,热力图的显示的重点是梯... 查看详情

r语言相关性计算及使用ggcorrplot包相关性分析热力图可视化分析实战

R语言相关性计算及使用ggcorrplot包相关性分析热力图可视化分析实战目录R语言相关性计算及使用ggcorrplot包相关性分析热力图可视化分析实战 查看详情

r语言ggplot2可视化相关性分析热力图heatmap使用ggcorrplot函数可视化相关性热力图(correllogram)自定义设置显示上三角形或者下三角形设置显示相关性数值颜色尺度条

R语言ggplot2可视化相关性分析热力图heatmap、使用ggcorrplot函数可视化相关性热力图(Correllogram)、自定义设置显示上三角形或者下三角形、设置显示相关性数值、颜色尺度条目录 查看详情

利用python创作热力图

1.引言热力图,是一种通过对色块着色来显示数据的统计图表。绘图时,需指定颜色映射的规则。例如,较大的值由较深的颜色表示,较小的值由较浅的颜色表示;较大的值由偏暖的颜色表示,较小的值由较冷的颜色表示,等等... 查看详情

python热力图绘制方法—新手教程

...术A#Python热力图绘制方法热力图的使用场景有 1.描述数据在空间的密集程度,常见有城市热力图,区域热力图2.描述多个变量之间相关性高低程度#step1准备数据集,读取excel列表内容,usecols=index,这里是表里的第一列不读取。in... 查看详情

在arcgis地图上绘制echarts热力图(heatmap)(代码片段)

...www.cnblogs.com/qiaoge0923/p/9562304.html  现如今,Echarts在数据可视化方面早已升入化境,已经不再拘泥于简单的饼图柱状图,已然从平面直角坐标系,扩展到了极坐标系和地理坐标系等等。  随着地图的使用越来越 查看详情

python绘制相关系数热力图(代码片段)

python绘制相关系数热力图一.数据说明和需要安装的库二.准备绘图三.设置配色,画出多幅图全部代码:本文讲述如何利用python绘制如上的相关系数热力图一.数据说明和需要安装的库数据是31个省市有关教育的12个指标࿰... 查看详情