【Python可视化系列】一文教会你绘制美观的热力图(理论+源码)

一、问题

    前文相关回顾:

    【Python可视化系列】一文彻底教会你绘制美观的折线图(理论+源码)

    【Python可视化系列】一文教会你绘制美观的柱状图(理论+源码)

    【Python可视化系列】一文教会你绘制美观的直方图(理论+源码)

        本文将总结热力图的绘制方法。热力图(Heatmap)是一种可视化工具,用于展示矩阵数据的模式和关联性。在热力图中,数据的值通过颜色的变化来表示,通常使用渐变色的色阶来表示数据的大小。

二、基本热力图

2.1 seaborn.heatmap()参数详解

seaborn.heatmap(data, vmin=None, vmax=None, cmap=None, center=None, robust=False, annot=None, fmt='.2g', 
annot_kws=None,linewidths=0, linecolor='white', cbar=True, cbar_kws=None, cbar_ax=None, square=False, 
xticklabels='auto', yticklabels='auto',mask=None, ax=None, **kwargs)

data:矩阵数据集,可以使numpy的数组(array),如果是pandas的dataframe,则df的index/column信息会分别对应到heatmap的columns和rows
vmin,vmax:用于指定图例中最小值与最大值的显示值
cmap:指定一个colormap对象,用于热力图的填充色
center:指定颜色中心值,通过该参数可以调整热力图的颜色深浅
annot:指定一个bool类型的值或与data参数形状一样的数组,如果为True,就在热力图的每个单元上显示数值
fmt:指定单元格中数据的显示格式
annot_kws:有关单元格中数值标签的其他属性描述,如颜色、大小等
linewidths :指定每个单元格的边框宽度
linecolor:指定每个单元格的边框颜色
cbar:bool类型参数,是否用颜色条作为图例,默认为True
square:bool类型参数,是否使热力图的每个单元格为正方形,默认为False
cbar_kws:有关颜色条的其他属性描述
xticklabels,yticklabels:指定热力图x轴和y轴的刻度标签,如果为True,则分别以数据框的变量名和行名称作为刻度标签
mask:用于突出显示某些数据
ax:用于指定子图的位置

用的比较多的参数是data、annot、fmt、xticklabels,yticklabels。

2.2 基于矩阵绘制热力图

import numpy as np
import seaborn as sns
import matplotlib.pyplot as plt

np.random.seed(0)
values = np.random.rand(10, 12)  # 自定义数据

x_ticks = ['x1', 'x2', 'x3', 'x4', 'x5', 'x6', 'x7', 'x8', 'x9', 'x10', 'x11', 'x12']
y_ticks = ['y1', 'y2', 'y3', 'y4', 'y5', 'y6', 'y7', 'y8', 'y9', 'y10']  # 自定义横纵轴
ax = sns.heatmap(values, xticklabels=x_ticks, yticklabels=y_ticks, annot=True,fmt ='0.2g')
ax.set_title('Heatmap')  # 图标题
ax.set_xlabel('x label')  # x轴标题
ax.set_ylabel('y label')
plt.show()
# figure = ax.get_figure()
# figure.savefig('sns_heatmap.jpg')  # 保存图片

矩阵数据集如下:

图片

对应的热力图如下:

图片

三、相关性热力图

3.1 准备数据

import pandas as pd
data = pd.read_csv(r'E:\数据杂坛\\UCI Heart Disease Dataset.csv')
df = pd.DataFrame(data)

dataframe数据如下:

图片

3.2 绘制dataframe相关性热力图

sns.set(font_scale=1.2)
plt.rc('font',family=['Times New Roman', 'SimSun'], size=12)
plt.subplots_adjust()
ax = sns.heatmap(df.corr(), annot=True, fmt=".2f")
ax.set_title('相关性热力图')  # 图标题
plt.xticks(rotation=45)
plt.tight_layout()
plt.show()
# figure = ax.get_figure()
# figure.savefig('sns_heatmap.jpg', bbox_inches='tight')

相关性热力图如下:

图片

本期内容就到这里,我们下期再见!需要数据集和源码的小伙伴可以关注私信作者或者底部公众号添加作者微信!

作者简介:

读研期间发表6篇SCI数据挖掘相关论文,现在某研究院从事数据算法相关科研工作,结合自身科研实践经历不定期分享关于Python、机器学习、深度学习、人工智能系列基础知识与应用案例。致力于只做原创,以最简单的方式理解和学习,关注我一起交流成长。

  • 8
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

数据杂坛

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值