使用Python seaborn库绘制热力图

发布时间:2025-07-16 01:08

热力图(Heatmap)是一种二维数据可视化工具,通过颜色的深浅来表示数据大小的差异,非常适合用来展示矩阵数据的分布、相关性或其他指标。

实际案例数据

我们以一个学生考试成绩矩阵为例,展示不同学生在不同科目上的得分。以下是数据:


学生姓名 数学 英语 物理 化学 生物 张三 80 85 78 92 88 李四 70 75 82 85 90 王五 88 80 86 80 85 赵六 60 65 70 75 72 陈七 95 90 85 88 92
使用 Seaborn 绘制热力图

以下是基于上述数据绘制热力图的完整代码:

import seaborn as sns import matplotlib.pyplot as plt import pandas as pd # 创建数据 data = pd.DataFrame({ "学生姓名":["张三","李四","王五","赵六","陈七"], "数学":[80,70,88,60,95], "英语":[85,75,80,65,90], "物理":[78,82,86,70,85], "化学":[92,85,80,75,88], "生物":[88,90,85,72,92] }) # 将学生姓名设置为索引 data.set_index("学生姓名", inplace=True) # 绘制热力图 plt.figure(figsize=(10,6)) sns.heatmap(data, annot=True, fmt="d", cmap="YlGnBu", linewidths=0.5) # 设置标题 plt.title("学生考试成绩热力图", fontsize=16) # 显示图表 plt.show()

代码解析1. 创建数据

data = pd.DataFrame({ "学生姓名":["张三","李四","王五","赵六","陈七"], "数学":[80,70,88,60,95], "英语":[85,75,80,65,90], "物理":[78,82,86,70,85], "化学":[92,85,80,75,88], "生物":[88,90,85,72,92] })

Pandas 数据框

• 我们使用 Pandas 创建一个数据框,表示学生的考试成绩。

• 每一行是一个学生,每一列是一个科目,单元格的值是对应学生的科目得分。

data.set_index("学生姓名", inplace=True)

设置索引

• 使用set_index()方法,将学生姓名设置为索引,方便在热力图中展示横轴为学生姓名。

2. 绘制热力图

plt.figure(figsize=(10, 6)) sns.heatmap(data, annot=True, fmt="d", cmap="YlGnBu", linewidths=0.5)

• **plt.figure(figsize=(10, 6))**:

• 设置热力图的图表尺寸,figsize=(10, 6)表示宽度为 10,长度为 6。

• **sns.heatmap()**:

• 使用 Seaborn 的heatmap函数绘制热力图。

•data:传入的数据框(矩阵)。

•annot=True:在每个单元格内显示数值。

•fmt="d":指定单元格数值的格式为整数(d)。

•cmap="YlGnBu":设置颜色映射为 "黄色到绿色到蓝色" 渐变。

•linewidths=0.5:设置单元格之间的间隔线宽度为 0.5。

3. 添加标题

plt.title("学生考试成绩热力图", fontsize=16)

• 为热力图添加标题,并设置字体大小。

4. 显示图表

plt.show()

• 使用plt.show()显示生成的热力图。

在这里插入图片描述 图表分析

运行代码后,生成的热力图将具有以下特点:

1.颜色表示值大小

• 热力图的颜色从浅黄色(低分)逐渐过渡到深蓝色(高分),反映不同科目的得分大小。

2.单元格注释

• 每个单元格内显示具体的得分值,例如 "张三" 在 "数学" 中的得分是 80。

3.对比直观

• 从颜色上可以直观地看出哪些学生在哪些科目表现较好(深蓝色),哪些科目表现较差(浅黄色)。

扩展优化1. 标准化数值

可以通过标准化数据,展示学生在不同科目上的相对表现(如百分制)。

data_normalized = data / 100 sns.heatmap(data_normalized, annot=True, fmt=".2f", cmap="coolwarm")

•data / 100:将原始数据标准化为 [0, 1] 范围。

•fmt=".2f":格式化数值为小数点后两位。

2. 调整颜色映射

更改颜色映射为其他渐变,如红色到蓝色。

sns.heatmap(data, annot=True, fmt="d", cmap="RdBu", linewidths=0.5)

•cmap="RdBu":使用红色到蓝色渐变,适合表示正负值的数据。

3. 添加颜色条

显示颜色条,用于解释颜色与数值的对应关系。

sns.heatmap(data, annot=True, fmt="d", cmap="YlGnBu", cbar=True)

•cbar=True:在热力图旁边添加颜色条。

总结

通过上述案例,我们学习了如何使用 Seaborn 绘制热力图,并用学生考试成绩作为实际案例展示数据分布。

热力图的应用场景

1.数据分布分析:观察矩阵数据的强弱分布。

2.相关性矩阵:展示变量之间的相关性(如股票收益的相关性)。

3.性能指标比较:比较不同个体在不同维度的表现。

Seaborn 的热力图功能强大且易用,通过不同的颜色映射和样式配置,可以满足多种可视化需求。

特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。

Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.

网址:使用Python seaborn库绘制热力图 https://mxgxt.com/news/view/1581075

相关内容

使用Python绘制混淆矩阵热力图
Python绘制相关性热力图的方法与技巧
使用Python实现数据可视化的魅力与应用
python绘制社交网络图
Python中绘制场景热力图
微博数据可视化分析:利用Python构建信息图表展示话题热度
利用Python进行数据可视化常见的9种方法!超实用!
python中如何绘制社交网络图
透视数据奥秘:Python 数据可视化的力量
python中如何绘制社交网络图 – PingCode

随便看看