一文弄懂Seaborn绘制热力图

2024-04-17 22:12

本文主要是介绍一文弄懂Seaborn绘制热力图,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

1. 引言

在本文中,我们将使用Seaborn库来以heatmap热力图的形式来表示数据。我们将重点介绍如何创建它,以及如何更改其颜色,调整对应字体大小等等。

闲话少说,我们直接开始吧!

2. 什么是热力图?

Heatmap,中文称为热力图,是一种数据可视化技术,它通过颜色的变化来表示数据的大小或密度。在热力图中,数据大小的变化通常会被表示为颜色渐变,从而在二维空间上形成一种“热度”的分布图。

颜色的深浅通常用来表示数据的量值大小,颜色越深表示数值越高,反之则越低。这种图表非常适合展示地理信息、用户行为、科学测量等数据的分布情况。

3. 安装Seaborn库

要在Python中创建heatmap,可以使用Seaborn库进行操作,该库建立在Matplotlib库的基础之上。Seaborn库提供了一个高级的数据可视化抽象接口方便我们可以绘制各种矩阵数据。

想要在代码中使用该库,一般通过pip命令进行该库的安装,如下:

pip install seaborn

运行结果如下:
在这里插入图片描述

4. 基本用法

好的,现在让我们创建一个热力图,首先让我们导入我们所需的库,如下:

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

我们导入了numpy模块,用以生成给定范围内的随机数数组,进而将该数组绘制为热力图。

data = np.random.rand(4, 6)

上述代码将创建一个2维数组,行数为4,列数为6;上述数组中的值表示用来画热力图的数值,接着我们将使用Seaborn库中的heatmap函数来绘制热力图,相应的绘制代码如下:

heat_map = sb.heatmap(data)

接着让我们使用matplotlib库中的plt.show()函数来展示上述热力图,如下:


plt.show()

运行后结果如下:
在这里插入图片描述

5.删除刻度标签

在数据可视化中,tick labels刻度标签是指在图表中x轴、y轴上显示的标签值,用于指示轴上每个刻度的具体数值或类别。Seaborn库在绘制热力图的时候默认会添加相应的刻度标签, 如果我们想要删除上述刻度标签我们可以通过设置xticklabel或者yticklabel的属性值来进行控制。代码如下:

heat_map = sb.heatmap(data, xticklabels=False, yticklabels=False)
plt.show()

运行后结果如下:
在这里插入图片描述

6. 设置x轴文本标签

我们可以使用Matplotlib库中的pyplot.label函数来为上述热力图添加x轴上的文本标签说明,代码如下:

heat_map = sb.heatmap(data)
plt.xlabel("Values on X axis")
plt.show()

运行后结果如下:
在这里插入图片描述

7. 删除y轴刻度标签

一般来说,Seaborn库也默认在y轴上添加相应的刻度标签,我们可以通过设置yticklabels=False,来实现保留x轴上的默认刻度标签,仅删除y轴上的刻度标签,代码如下:

heat_map = sb.heatmap(data, yticklabels=False)
plt.show()

运行后结果如下:

在这里插入图片描述

8.设置y轴文本标签

参考前面章节,我们也可以类似地使用Matplotlib库中的pyplot.ylabel来实现绘制热力图上y轴的文本标签,代码如下:

data = np.random.rand(4, 6)
heat_map = sb.heatmap(data)
plt.ylabel('Values on Y axis')
plt.show()

运行后结果如下:
在这里插入图片描述

9. 设置热力图颜色

我们也可以通过使用heatmap中的cmap属性来通过改变调色板color map进而实现更改seaborn中绘制heatmap的颜色。代码如下:

data = np.random.rand(4, 6)
heat_map = sb.heatmap(data,cmap="YlGnBu")
plt.show()

运行后结果如下:
在这里插入图片描述

10. 设置热力图网格显示数值

如果我们需要在heatmap上显示具体的文本数值,我们可以使用heatmap函数中的annot参数控制。如果设置annot=True, 则热力图上每个单元格会展示对应的文本数值。代码如下:

data = np.random.rand(4, 6)
heat_map = sb.heatmap(data, annot=True)
plt.show()

运行结果如下:
在这里插入图片描述

11. 调整显示字体大小

我们可以使用seabornfont_scale属性来调整heatmap显示文本中的字体大小,如下所示:

data = np.random.rand(4, 6)
sb.set(font_scale=2)
heat_map = sb.heatmap(data, annot=True)
plt.show()

增大显示文本字体大小后,热力图的效果如下所示:
在这里插入图片描述

12.控制热力图调色板

热力图中的调色板如下图中圆圈所示:
在这里插入图片描述
事实上,heatmap函数中的参数cbar是一个Bool型变量,主要用来控制是否应该显示上述调色板。默认来说,上述变量设置为True,表示默认在画热力图的时候会展示相应的调色板。我们也可以使用以下代码,来删除右侧图中的调色板,代码如下:

data = np.random.rand(4, 6)
sb.set(font_scale=2)
heat_map = sb.heatmap(data, annot=True,cbar=False)
plt.show()

运行后结果如下:
在这里插入图片描述

13. 调色板添加文本标签

为了给热力图中的调色板添加相应的文本标签,用来说明文字提示。我们一般使用变量参数cbar_kws来控制,代码如下:

data = np.random.rand(4, 6)
heat_map = sb.heatmap(data, annot=True, cbar_kws={'label': 'My Colorbar'})
plt.show()

运行后结果如下:
在这里插入图片描述

14. 调整调色板显示位置

参考上一章节,参数cbar_kws除了控制为调色板添加自定义文本外,还可以控制调色板水平和垂直显示。虽然默认情况下,调色板为垂直显示,我们可以通过以下代码来控制水平显示调色板,代码如下:

data = np.random.rand(4, 6)
heat_map = sb.heatmap(data, annot=True, cbar_kws={'label': 'My Colorbar', 'orientation': 'horizontal'})
plt.show()

运行后结果如下:
在这里插入图片描述

15. 自定义网格线

自定义Seaborn热力图中的网格线可以增强数据可视化的可读性和美观性。调整线宽和线条颜色可以明显地分离数据点,使热力图更加直观和直观。我们可以调整分隔单元格的线条宽度,并改变它们的颜色,以使单元格之间的区别更加清晰。

data = np.random.rand(4, 6)
sns.heatmap(df, annot=True, cmap='coolwarm', linewidths=0.5, linecolor='black')
plt.show()

运行后结果如下:
在这里插入图片描述
上图中的热力图现在有更明显的网格线,单元格线宽为0.5,颜色为黑色,使每个单元格分离更加明显,数据更容易读取。

16. 自定义显示数据格式

观察上述在Seaborn绘制的热力图中的小数,有的保留小数点后两位,有的为小数点后一位,看起来不太完美!

事实上,我们可以设置带四舍五入小数点的格式,一般通过在函数heatmap中使用fmt参数控制。此参数允许大家指定格式化输出的字符串来控制输出格式。

例如,如果要显示四舍五入到小数点后两位的数字,可以使用fmt=".2f"。代码如下:

import seaborn as sns
import matplotlib.pyplot as plt
import pandas as pd
import numpy as np
np.random.seed(0)
data = pd.DataFrame(np.random.randn(10, 10))
corr = data.corr()
plt.figure(figsize=(10, 8))
sns.heatmap(corr, annot=True, fmt=".2f", cmap='coolwarm')
plt.show()

运行后结果如下:

在这里插入图片描述

17. 总结

本文重点介绍了在Python中如何利用Seaborn库来绘制热力图,用来直观的可视化数据的密度和分布,并详细介绍了不同参数控制下的可视化效果,并给出了相应的代码示例!

您学废了嘛!

这篇关于一文弄懂Seaborn绘制热力图的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/912989

相关文章

使用Python绘制蛇年春节祝福艺术图

《使用Python绘制蛇年春节祝福艺术图》:本文主要介绍如何使用Python的Matplotlib库绘制一幅富有创意的“蛇年有福”艺术图,这幅图结合了数字,蛇形,花朵等装饰,需要的可以参考下... 目录1. 绘图的基本概念2. 准备工作3. 实现代码解析3.1 设置绘图画布3.2 绘制数字“2025”3.3

使用Python绘制可爱的招财猫

《使用Python绘制可爱的招财猫》招财猫,也被称为“幸运猫”,是一种象征财富和好运的吉祥物,经常出现在亚洲文化的商店、餐厅和家庭中,今天,我将带你用Python和matplotlib库从零开始绘制一... 目录1. 为什么选择用 python 绘制?2. 绘图的基本概念3. 实现代码解析3.1 设置绘图画

Python绘制土地利用和土地覆盖类型图示例详解

《Python绘制土地利用和土地覆盖类型图示例详解》本文介绍了如何使用Python绘制土地利用和土地覆盖类型图,并提供了详细的代码示例,通过安装所需的库,准备地理数据,使用geopandas和matp... 目录一、所需库的安装二、数据准备三、绘制土地利用和土地覆盖类型图四、代码解释五、其他可视化形式1.

如何用Python绘制简易动态圣诞树

《如何用Python绘制简易动态圣诞树》这篇文章主要给大家介绍了关于如何用Python绘制简易动态圣诞树,文中讲解了如何通过编写代码来实现特定的效果,包括代码的编写技巧和效果的展示,需要的朋友可以参考... 目录代码:效果:总结 代码:import randomimport timefrom math

一文带你搞懂Nginx中的配置文件

《一文带你搞懂Nginx中的配置文件》Nginx(发音为“engine-x”)是一款高性能的Web服务器、反向代理服务器和负载均衡器,广泛应用于全球各类网站和应用中,下面就跟随小编一起来了解下如何... 目录摘要一、Nginx 配置文件结构概述二、全局配置(Global Configuration)1. w

【WebGPU Unleashed】1.1 绘制三角形

一部2024新的WebGPU教程,作者Shi Yan。内容很好,翻译过来与大家共享,内容上会有改动,加上自己的理解。更多精彩内容尽在 dt.sim3d.cn ,关注公众号【sky的数孪技术】,技术交流、源码下载请添加微信号:digital_twin123 在 3D 渲染领域,三角形是最基本的绘制元素。在这里,我们将学习如何绘制单个三角形。接下来我们将制作一个简单的着色器来定义三角形内的像素

Flutter 进阶:绘制加载动画

绘制加载动画:由小圆组成的大圆 1. 定义 LoadingScreen 类2. 实现 _LoadingScreenState 类3. 定义 LoadingPainter 类4. 总结 实现加载动画 我们需要定义两个类:LoadingScreen 和 LoadingPainter。LoadingScreen 负责控制动画的状态,而 LoadingPainter 则负责绘制动画。

利用matlab bar函数绘制较为复杂的柱状图,并在图中进行适当标注

示例代码和结果如下:小疑问:如何自动选择合适的坐标位置对柱状图的数值大小进行标注?😂 clear; close all;x = 1:3;aa=[28.6321521955954 26.2453660695847 21.69102348512086.93747104431360 6.25442246899816 3.342835958564245.51365061796319 4.87

YOLOv8/v10+DeepSORT多目标车辆跟踪(车辆检测/跟踪/车辆计数/测速/禁停区域/绘制进出线/绘制禁停区域/车道车辆统计)

01:YOLOv8 + DeepSort 车辆跟踪 该项目利用YOLOv8作为目标检测模型,DeepSort用于多目标跟踪。YOLOv8负责从视频帧中检测出车辆的位置,而DeepSort则负责关联这些检测结果,从而实现车辆的持续跟踪。这种组合使得系统能够在视频流中准确地识别并跟随特定车辆。 02:YOLOv8 + DeepSort 车辆跟踪 + 任意绘制进出线 在此基础上增加了用户

Post-Training有多重要?一文带你了解全部细节

1. 简介 随着LLM学界和工业界日新月异的发展,不仅预训练所用的算力和数据正在疯狂内卷,后训练(post-training)的对齐和微调方法也在不断更新。InstructGPT、WebGPT等较早发布的模型使用标准RLHF方法,其中的数据管理风格和规模似乎已经过时。近来,Meta、谷歌和英伟达等AI巨头纷纷发布开源模型,附带发布详尽的论文或报告,包括Llama 3.1、Nemotron 340