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

示例

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

在这里插入图片描述

数据准备

模块导入

import pandas as pd
import matplotlib.pyplot as plt 
import seaborn as sns

基础数据

#此处使用了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']]) 

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

行/列切换

单列

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

在这里插入图片描述

单行

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

在这里插入图片描述

格式优化

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

调整图块形状

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

在这里插入图片描述

调整图片大小

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

在这里插入图片描述

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

#设置图像尺寸
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)

在这里插入图片描述

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

#设置图像尺寸
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)

在这里插入图片描述

增加数字标签

#设置图像尺寸
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)

#设置图像尺寸
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)

在这里插入图片描述

加标题

#设置图像尺寸
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)

在这里插入图片描述

换颜色

#设置图像尺寸
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

其他

比如,白色分隔线

#设置图像尺寸
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)

在这里插入图片描述

  • 15
    点赞
  • 36
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: PythonSeaborn库可以用来热力图热力图是一种可视化方式,用于显示数据的密度和分布情况。在Seaborn,可以使用heatmap()函数来绘制热力图。该函数需要传入一个二维数组或DataFrame,并且可以设置颜色映射、标签、标题等参数来定制热力图的样式。 ### 回答2: Python Seaborn是一款专门为数据可视化提供工具的库,它内置了各种绘图技巧,包括条形图、散点图、热力图等等。其热力图是一种用颜色来表示数据集数据分布的方法,可以显示出数据之间的相关性和变化规律。下面我们来介绍如何使用Python Seaborn库实现热力图的绘制。 首先,我们需要安装并导入Seaborn库。安装方法如下: ``` !pip install seaborn ``` 导入方法如下: ```python import seaborn as sns ``` 接着,我们需要准备数据。热力图需要的数据是二维的矩阵或数据框,其横纵坐标代表不同的数据类别,格子的颜色表示两类数据之间的关系或数值大小。我们可以使用Python的Pandas库来生成数据框。 例如,我们可以使用以下代码生成一个随机的3x3的数据框: ```python import pandas as pd import numpy as np df = pd.DataFrame(np.random.rand(3,3)) ``` 数据准备好后,我们可以使用Seaborn库的heatmap函数设置热力图。heatmap函数有很多参数可以调整热力图的样式和显示效果,下面我们来讲解一些常用的参数: - data:传入一个数据框作为源数据 - cmap:设置颜色映射,可以是Seaborn库默认的颜色映射,也可以是matplotlib库的颜色映射 - annot:设置是否在格子显示数值 - fmt:设置显示数值的格式 - linewidths:设置格子之间的间隔线宽度 - square:设置是否将热力图的边框变为正方形 例如,我们可以使用以下代码绘制一个基础的热力图: ```python sns.heatmap(df) ``` 如果我们希望调整颜色映射,可以使用以下代码: ```python sns.heatmap(df, cmap="YlGnBu") ``` 如果我们希望在每个格子显示数值,并调整显示格式和间隔线宽度,可以使用以下代码: ```python sns.heatmap(df, annot=True, fmt=".2f", linewidths=.5) ``` 如果我们希望将热力图的边框设置为正方形,可以使用以下代码: ```python sns.heatmap(df, square=True) ``` 除了以上的参数外,Seaborn库的heatmap函数还有许多其他的参数和设置,用户可以根据实际需求进行调整和使用,从而绘制出美观、清晰的热力图。 ### 回答3: Python SeabornPython的一个绘图库,主要用于数据可视化。其热力图是数据可视化比较常见,且易于理解的图表。本文将介绍Python Seaborn库如何绘制热力图。 一、数据准备 要绘制热力图,必须有相关的数据,这里我们以某城市的房价为例进行说明。首先考虑如何获取数据,我们可以从公开数据集获取,也可以从自己收集的数据获取。在本例,我们使用了Pandas库的read_csv函数来导入数据,代码如下: ``` import pandas as pd df = pd.read_csv('city_house.csv', index_col=0) ``` 二、绘制热力图 在数据准备完成之后,就可以开始利用Python Seaborn绘制热力图了。首先需要导入seaborn库,并选择需要绘制的数据,以本例的房价数据为例,代码如下: ``` import seaborn as sns data = df.pivot(index='Year', columns='Month', values='Price') ``` 在选择数据之后,就可以使用sns.heatmap()函数绘制热力图了。函数需要输入数据、颜色映射方案等参数。具体代码如下: ``` sns.heatmap(data, cmap="YlGnBu") ``` 需要注意的是,代码的cmap参数指定的是颜色映射方案,这里我们选择的是黄绿蓝渐变(YlGnBu)。如果需要更改颜色映射方案,则可以在代码修改。 三、设置图表属性 在绘制热力图之后,我们可以设置图表的属性,使其更加适合展示。通常可以设置标题、横纵坐标的标签等。代码如下: ``` sns.heatmap(data, cmap="YlGnBu") sns.set(font_scale=1.2) plt.title('City House Price') plt.xlabel('Month') plt.ylabel('Year') plt.show() ``` 其,sns.set()函数用于设置图表和字体的大小,plt.title()、plt.xlabel()、plt.ylabel()函数用于设置标题、横纵坐标的标签。 四、完整代码 最后给出完整代码如下: ``` import pandas as pd import seaborn as sns import matplotlib.pyplot as plt df = pd.read_csv('city_house.csv', index_col=0) data = df.pivot(index='Year', columns='Month', values='Price') sns.heatmap(data, cmap="YlGnBu") sns.set(font_scale=1.2) plt.title('City House Price') plt.xlabel('Month') plt.ylabel('Year') plt.show() ``` 五、总结 Python Seaborn库可以轻松地绘制热力图,不仅美观、直观,而且易于理解。通过简单的数据预处理和图表属性设置,可以得到具有实际意义的热力图

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值