您的位置:首页 > 文旅 > 美景 > 乐至seo_电子营业执照_免费的h5制作网站_论坛企业推广

乐至seo_电子营业执照_免费的h5制作网站_论坛企业推广

2024/12/23 8:45:02 来源:https://blog.csdn.net/xiaosa5211234554321/article/details/144167761  浏览:    关键词:乐至seo_电子营业执照_免费的h5制作网站_论坛企业推广
乐至seo_电子营业执照_免费的h5制作网站_论坛企业推广

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


实际案例数据

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

学生姓名数学英语物理化学生物
张三8085789288
李四7075828590
王五8880868085
赵六6065707572
陈七9590858892

使用 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 的热力图功能强大且易用,通过不同的颜色映射和样式配置,可以满足多种可视化需求。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com