用python中的seaborn画单行/单列热力图

目录

  • 示例
  • 数据准备
    • 模块导入
    • 基础数据
  • 行/列切换
    • 单列
    • 单行
  • 格式优化
    • 调整图块形状
    • 调整图片大小
    • 旋转轴上文字方向和改变轴字体大小
    • 调整图例为横向并缩小图例
    • 增加数字标签
    • 设置图例范围
    • 加标题
    • 换颜色
    • 其他

示例

热力图一般是矩阵的样子,但是如果我们不想展示那么多关系数据,只想重点凸显其中一个特征值与其他特征值之间的相关关系
比如,这样的:
在这里插入图片描述
或者这样的:

在这里插入图片描述

数据准备

模块导入

1
2
3
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns

基础数据

1
2
3
4
5
#此处使用了kaggle上的房价预测数据
data_heat=train_data[['SalePrice','MSSubClass','OverallQual','MasVnrArea','HalfBath','PoolArea',
'GrLivArea','Electrical','GarageCars','LotArea','YearRemodAdd','Fireplaces','YearBuilt',
            'TotalBsmtSF','LowQualFinSF','WoodDeckSF','KitchenQual','KitchenAbvGr','BsmtQual']]
print(data_heat.corr().loc[:,['SalePrice']])

输出:(热力图中用到的数据)
在这里插入图片描述

行/列切换

单列

1
sns.heatmap(data_heat.corr().loc[:,['SalePrice']])

在这里插入图片描述

单行

1
sns.heatmap(data_heat.corr().loc[['SalePrice'],:])

在这里插入图片描述

格式优化

下面具体来讲讲怎么调参:

调整图块形状

1
sns.heatmap(data_heat.corr().loc[['SalePrice'],:],square=True)

在这里插入图片描述

调整图片大小

1
2
plt.figure(figsize=(10, 4))
sns.heatmap(data_heat.corr().loc[['SalePrice'],:],square=True)

在这里插入图片描述

旋转轴上文字方向和改变轴字体大小

1
2
3
4
5
6
7
8
#设置图像尺寸
plt.figure(figsize=(10, 4))
#热力图主要参数调整
ax=sns.heatmap(data_heat.corr().loc[['SalePrice'],:],square=True)
#更改坐标轴标签字体大小
ax.tick_params(labelsize=7)
# 旋转x轴刻度上文字方向
ax.set_xticklabels(ax.get_xticklabels(), rotation=20)

在这里插入图片描述

调整图例为横向并缩小图例

1
2
3
4
5
6
7
8
9
10
#设置图像尺寸
plt.figure(figsize=(10, 4))
#设置图例字体大小
sns.set(font_scale=0.7)
#热力图主要参数调整
ax=sns.heatmap(data_heat.corr().loc[['SalePrice'],:],square=True,cbar_kws={'orientation': 'horizontal',"shrink": 0.3})
#更改坐标轴标签字体大小
ax.tick_params(labelsize=7)
# 旋转x轴刻度上文字方向
ax.set_xticklabels(ax.get_xticklabels(), rotation=20)

在这里插入图片描述

增加数字标签

1
2
3
4
5
6
7
8
9
10
#设置图像尺寸
plt.figure(figsize=(10, 4))
sns.set(font_scale=0.7)
#热力图主要参数调整
ax=sns.heatmap(data_heat.corr().loc[['SalePrice'],:],square=True,cbar_kws={'orientation': 'horizontal',"shrink": 0.3},
               annot=True,annot_kws={"size": 8})
#更改坐标轴标签字体大小
ax.tick_params(labelsize=7)
# 旋转x轴刻度上文字方向
ax.set_xticklabels(ax.get_xticklabels(), rotation=20)

在这里插入图片描述

设置图例范围

将图例范围从自动识别,改为固定的(-1.0~1.0)

1
2
3
4
5
6
7
8
9
10
#设置图像尺寸
plt.figure(figsize=(10, 4))
sns.set(font_scale=0.7)
#热力图主要参数调整
ax=sns.heatmap(data_heat.corr().loc[['SalePrice'],:],square=True,cbar_kws={'orientation': 'horizontal',"shrink": 0.3},
               annot=True,annot_kws={"size": 8} ,vmax=1.0,vmin=-1.0)
#更改坐标轴标签字体大小
ax.tick_params(labelsize=7)
# 旋转x轴刻度上文字方向
ax.set_xticklabels(ax.get_xticklabels(), rotation=20)

在这里插入图片描述

加标题

1
2
3
4
5
6
7
8
9
10
11
12
#设置图像尺寸
plt.figure(figsize=(10, 4))
sns.set(font_scale=0.7)
#热力图主要参数调整
ax=sns.heatmap(data_heat.corr().loc[['SalePrice'],:],square=True,cbar_kws={'orientation': 'horizontal',"shrink": 0.3},
               annot=True,annot_kws={"size": 8} ,vmax=1.0,vmin=-1.0)
#设置标题
ax.set(title= "House SalePrice Correlation Heatmap")
#更改坐标轴标签字体大小
ax.tick_params(labelsize=7)
# 旋转x轴刻度上文字方向
ax.set_xticklabels(ax.get_xticklabels(), rotation=20)

在这里插入图片描述

换颜色

1
2
3
4
5
6
7
8
9
10
11
12
13
#设置图像尺寸
plt.figure(figsize=(10, 4))
sns.set(font_scale=0.7)
#热力图主要参数调整
ax=sns.heatmap(data_heat.corr().loc[['SalePrice'],:],square=True,cbar_kws={'orientation': 'horizontal',"shrink": 0.3},
               annot=True,annot_kws={"size": 8} ,vmax=1.0,vmin=-1.0,cmap='coolwarm')
#设置标题
ax.set(title= "House SalePrice Correlation Heatmap")

#更改坐标轴标签字体大小
ax.tick_params(labelsize=7)
# 旋转x轴刻度上文字方向
ax.set_xticklabels(ax.get_xticklabels(), rotation=20)

在这里插入图片描述
cmap的参数如下,参考【Python】绘制热力图seaborn.heatmap,cmap设置颜色的参数:

Accent, Accent_r, Blues, Blues_r, BrBG, BrBG_r, BuGn, BuGn_r, BuPu, BuPu_r, CMRmap, CMRmap_r, Dark2, Dark2_r, GnBu(绿到蓝), GnBu_r, Greens, Greens_r, Greys, Greys_r, OrRd(橘色到红色), OrRd_r, Oranges, Oranges_r, PRGn, PRGn_r, Paired, Paired_r, Pastel1, Pastel1_r, Pastel2, Pastel2_r, PiYG, PiYG_r, PuBu, PuBuGn, PuBuGn_r, PuBu_r, PuOr, PuOr_r, PuRd, PuRd_r, Purples, Purples_r, RdBu, RdBu_r, RdGy, RdGy_r, RdPu, RdPu_r, RdYlBu, RdYlBu_r, RdYlGn, RdYlGn_r, Reds, Reds_r, Set1, Set1_r, Set2, Set2_r, Set3, Set3_r, Spectral, Spectral_r, Wistia(蓝绿黄), Wistia_r, YlGn, YlGnBu, YlGnBu_r, YlGn_r, YlOrBr, YlOrBr_r, YlOrRd(红橙黄), YlOrRd_r, afmhot, afmhot_r, autumn, autumn_r, binary, binary_r, bone, bone_r, brg, brg_r, bwr, bwr_r, cividis, cividis_r, cool, cool_r, coolwarm(蓝到红), coolwarm_r, copper(铜色), copper_r, cubehelix, cubehelix_r, flag, flag_r, gist_earth, gist_earth_r, gist_gray, gist_gray_r, gist_heat, gist_heat_r, gist_ncar, gist_ncar_r, gist_rainbow, gist_rainbow_r, gist_stern, gist_stern_r, gist_yarg, gist_yarg_r, gnuplot, gnuplot2, gnuplot2_r, gnuplot_r, gray, gray_r, hot, hot_r(红黄), hsv, hsv_r, icefire, icefire_r, inferno, inferno_r, jet, jet_r, magma, magma_r, mako, mako_r, nipy_spectral, nipy_spectral_r, ocean, ocean_r, pink, pink_r, plasma, plasma_r, prism, prism_r, rainbow, rainbow_r, rocket, rocket_r, seismic, seismic_r, spring, spring_r, summer (黄到绿), summer_r (绿到黄), tab10, tab10_r, tab20, tab20_r, tab20b, tab20b_r, tab20c, tab20c_r, terrain, terrain_r, twilight, twilight_r, twilight_shifted, twilight_shifted_r, viridis, viridis_r, vlag, vlag_r, winter, winter_r

其他

比如,白色分隔线

1
2
3
4
5
6
7
8
9
10
11
12
#设置图像尺寸
plt.figure(figsize=(10, 4))
sns.set(font_scale=0.7)
#热力图主要参数调整
ax=sns.heatmap(data_heat.corr().loc[['SalePrice'],:],square=True,cbar_kws={'orientation': 'horizontal',"shrink": 0.3},
               annot=True,annot_kws={"size": 8} ,vmax=1.0,vmin=-1.0,cmap='coolwarm',linewidths=0.05,linecolor='white')
#设置标题
ax.set(title= "House SalePrice Correlation Heatmap")
#更改坐标轴标签字体大小
ax.tick_params(labelsize=7)
# 旋转x轴刻度上文字方向
ax.set_xticklabels(ax.get_xticklabels(), rotation=20)

在这里插入图片描述