当前位置: 首页 > news >正文

【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 pltnp.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、机器学习、深度学习、人工智能系列基础知识与应用案例。致力于只做原创,以最简单的方式理解和学习,关注我一起交流成长。

http://www.lryc.cn/news/267298.html

相关文章:

  • 百度Apollo五步入门自动驾驶:Dreamview与离线数据包分析(文末赠送apollo周边)
  • 为什么IPv6 可以作为低功耗蓝牙的物联网体系结构?
  • GPT每预测一个token就要调用一次模型
  • 运维工程师的出路到底在哪里?
  • 2312clang,基于访问者的前端动作
  • 怎么搭建实时渲染云传输服务器
  • 如何在生产环境正确使用Redis
  • LeetCode-环形链表问题
  • C# 读取Word表格到DataSet
  • 构建外卖系统:从技术到实战
  • 城市之眼:数据可视化在智慧城市的角色
  • Nature | Baker团队用AI设计出史上最高互作强度的蛋白质
  • C# 初识System.IO.Pipelines
  • 嵌入式——RTC内置实时时钟
  • nodejs微信小程序+python+PHP的热带野生动物园景点预约订票系统的设计与实现-计算机毕业设计推荐
  • ASP.NET MVC的5种AuthorizationFilter
  • C语言初学8:函数和作用域
  • 2024年科技盛宴“上海智博会·上海软博会”招商工作接近尾声
  • 深圳锐科达SIP矿用电话模块SV-2801VP
  • 【Qt-数据库】
  • windows文件名命名规范(文件名规范、命名规则、避免特殊字符、注意文件名长度限制260个字符)
  • 如何修改MySQL的默认端口
  • Android笔记(二十一):Room组件实现Android应用的持久化处理
  • uniapp中各种状态的按钮
  • 模式识别与机器学习-判别式分类器
  • c++11 标准模板(STL)(std::pair)(七)访问 pair 的一个元素
  • IP 地址归属地查询
  • 实战经验分享:在Java中灵活应用Excel注释和批注
  • AUTOSAR从入门到精通-车载以太网(三)
  • 【自然语言处理】用Python从文本中删除个人信息-第二部分