Python数据可视化高级实战之二——热力图绘制探究

目录

  一、热力图的作用

  二、热力图反映的信息类型

  三、热力图的典型应用场景

  1. 地球信息系统 (GIS)

  2. 城市交通分析

  3. 市场分析

  4. 用户行为分析

  5. 网络流量分析

  6. 传染病传播分析

  7. 社交媒体舆情分析

  四、Python 绘制热力图的关键技术要点

  1. 数据预处理

  2. 颜色选择与渐变效果

  3. 图形美化技巧

  4. 高级技巧

  五、章节总结


  一、热力图的作用

  热力图在多个领域中具有广泛的应用和重要意义。首先,热力图能够直观地展示数据的分布、密度和集中程度,帮助分析人员快速识别数据的热点区域和冷点区域,发现数据中的模式和异常。

  其次,热力图在市场分析和用户行为分析中发挥着重要作用。通过分析用户在网络界面上的鼠标移动轨迹,热力图可以揭示用户的兴趣点和互动行为。此外,热力图还能分析用户在浏览新闻或博客时的关注焦点,揭示哪些内容最能激发用户的兴趣。

  在医学领域,热力图用于揭示数据在地理空间上的密度分布,帮助分析医疗资源的分布和人口密度等重要信息。通过观察热力图,可以快速发现热点区域,有助于针对性地进行资源分配和疾病防控工作。

  最后,热力图在科学研究和决策支持中也具有重要意义。

  热力图 (Heatmap) 通过颜色深浅来可视化二维数据的数值分布,其核心作用包括:

  •   数据模式识别:直观展示数据的高低分布、聚类特征和异常值
  •   多变量关联分析:在矩阵中同时呈现多个变量间的关系强度
  •   趋势与异常检测:通过颜色渐变快速识别数据热点区域
  •   空间数据可视化:特别适合展示地理、时间等二维空间上的数据变化

  与其他图表相比,热力图的优势在于能够在有限空间内展示高密度数据,同时保留数据的整体分布特征。

  二、热力图反映的信息类型

  •   数值大小:通过颜色深浅直接反映数值高低
  •   数据分布:集中趋势、离散程度和异常值位置
  •   关联关系:变量间的相关性强弱(如相关系数矩阵)
  •   时间 / 空间变化:地理区域差异或时间序列变化(如气温变化热力图)
  •   聚类特征:相似数值区域的聚集情况

  例如,在用户行为分析中,热力图可以展示不同页面元素的点击频率分布;在基因表达分析中,可呈现不同基因在不同条件下的表达水平差异。

  三、热力图的典型应用场景

  1. 地球信息系统 (GIS)

  用途:展示地理空间数据,如气温分布、地形高度、人口密度

  示例:2000-2024年全球各大洲平均气温热力图,用颜色梯度表示温度变化

import numpy as np
import matplotlib.pyplot as plt
import pandas as pd
import seaborn as sns
from matplotlib.colors import LinearSegmentedColormap# 设置中文字体支持
plt.rcParams["font.family"] = ["SimHei", "WenQuanYi Micro Hei", "Heiti TC"]
plt.rcParams["axes.unicode_minus"] = False  # 解决负号显示问题def generate_sample_data():"""生成示例数据(实际应用中应替换为真实数据)"""years = list(range(2000, 2025))regions = ["非洲", "亚洲", "欧洲", "北美洲", "南美洲", "大洋洲"]# 创建随机数据,模拟气温变化趋势(逐年上升)np.random.seed(42)  # 设置随机种子,确保结果可重现base_temps = np.array([25.5, 15.2, 10.3, 8.1, 19.8, 18.5])  # 各区域基准温度trends = np.array([0.05, 0.07, 0.06, 0.08, 0.04, 0.05])     # 各区域温度上升趋势data = []for year in years:for i, region in enumerate(regions):# 计算该年份该区域的温度:基准温度 + 趋势 * 年数 + 随机波动temp = base_temps[i] + trends[i] * (year - 2000) + np.random.normal(0, 0.3)data.append([year, region, temp])return pd.DataFrame(data, columns=["年份", "区域", "温度(°C)"])def create_temperature_heatmap(data):"""创建全球年平均气温变化热力图"""# 转换数据为适合热力图的格式(年份作为行,区域作为列)pivot_data = data.pivot(index="区域", columns="年份", values="温度(°C)")# 创建自定义颜色映射(蓝色到红色,表示低温到高温)colors = [(0.2, 0.2, 0.8), (0.8, 0.2, 0.2)]  # 蓝到红cmap = LinearSegmentedColormap.from_list("BlueRed", colors, N=100)# 创建画布plt.figure(figsize=(14, 8))# 计算数据的最小值和最大值,用于颜色映射min_temp = pivot_data.values.min()max_temp = pivot_data.values.max()# 绘制热力图ax = sns.heatmap(pivot_data, cmap=cmap, annot=True, fmt=".1f", linewidths=.5,cbar_kws={"label": "温度(°C)", "shrink": 0.8},vmin=min_temp, vmax=max_temp)# 添加标题和标签plt.title("2000-2024年全球各区域年平均气温变化热力图", fontsize=16)plt.xlabel("年份", fontsize=12)plt.ylabel("区域", fontsize=12)# 旋转x轴标签plt.xticks(rotation=45)# 添加温度变化趋势线fig, ax2 = plt.subplots(figsize=(12, 6))for region in data["区域"].unique():region_data = data[data["区域"] == region]ax2.plot(region_data["年份"], region_data["温度(°C)"], 'o-', label=region)ax2.set_title("2000-2024年全球各区域年平均气温变化趋势&#

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/81906.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

配电网运行状态综合评估方法研究

1评估指标体系的构建 [1]冷华,童莹,李欣然,等.配电网运行状态综合评估方法研究[J].电力系统保护与控制,2017,45(01):53-59. 1.1评估范围 图1为配电系统组成示意图,其中A、B、C分别表示高、中、低压配电系统。高压配变(也称主变)将35kV或110kV的电压降到10kV&#…

Docker安装MinIO对象存储中间件

MinIO 是一个高性能、分布式的对象存储系统,兼容 Amazon S3 云存储服务协议,广泛应用于企业存储、大数据、机器学习和容器化应用等领域。以下是详细介绍: 核心特点 兼容 S3 API :全面兼容 Amazon S3 API,这意味着使用…

HTML回顾

html全称:HyperText Markup Language(超文本标记语言) 注重标签语义,而不是默认效果 规则 块级元素包括: marquee、div等 行内元素包括: span、input等 规则1:块级元素中能写:行内元素、块级元素(几乎什么都能写) 规则2:行级元素中能写:行内元素,但不能写:块…

JAVA Spring MVC+Mybatis Spring MVC的工作流程*,多表连查

目录 注解总结 将传送到客户端的数据转成json数据 **描述一下Spring MVC的工作流程** 1。属性赋值 BeanUtils.copyProperties(addUserDTO,user); 添加依赖: spring web、mybatis framework、mysql driver Controller和ResponseBody优化 直接改成RestControl…

H2数据库中一条insert语句到生成java对象到数据写入磁盘的完整步骤

H2 数据库将 SQL 语句转换为磁盘存储的全过程可以分为以下 8 个关键步骤,我们以 INSERT INTO users (id, name) VALUES (1, Alice) 为例详细说明: 1. SQL 解析与语法树生成 词法分析:拆分语句为 INSERT、INTO、users 等 Token语法分析&#…

重磅升级!Google Play商店改版上线

5 月 21 日消息,Android Headline 今天(5 月 21 日)发布博文,报道称在 2025 年 I/O 开发者大会上,谷歌宣布更新 Google Play 应用商店,在优化用户体验的同时,提升开发者收益。 本次更新中&…

Docker面试题(1)

什么是Docker 一个容器化平台 形式是容器 将你的应用程序及所有依赖项打包在一起 确保应用程序在任何环境中无缝运行 什么是Docker镜像 Docker镜像是Docker容器的源代码 用于创建容器 使用build命令创建镜像 什么是 Docker容器 包括应用程序及所有的依赖项 作为操作系统的独立进…

Ulisses Braga-Neto《模式识别和机器学习基础》

模式识别和机器学习基础 [专著] Fundamentals of pattern recognition and machine learning / (美)乌利塞斯布拉加-内托(Ulisses Braga-Neto)著 ; 潘巍[等]译 推荐这本书,作者有自己的见解,而且提供代码。问题是难度高,对于初学…

RabbitMQ的简介

三个概念 生产者:生产消息的服务消息代理:消息中间件,如RabbitMQ消费者:获取使用消息的服务 消息队列到达消费者的两种形式 队列(queue):点对点消息通信(point-to-point) 消息进入队…

自动切换剪贴板路径中反斜杠为正斜杠

有时候需要将我们常见的win全路径中反斜杠为正斜杠,每次用记事本,编辑替换非常麻烦,于是写了这个工具,能自动修改剪贴板中的数据,只需要运行一下即可。 实现效果,将类似于下面的路径: C:\User…

【时时三省】Python 语言----文件

目录 1,文件打开 2, 文件关闭 3, 文件写入 4, 文件读出 5, 文件定位 6, 文件重命名 7, 复制文件 山不在高,有仙则名。水不在深,有龙则灵。 ----CSDN 时时三省 1,文件打开 file = open(file, mode, buffering, encoding, errors, newline, closefd, opener) 2, 文…

React 个人笔记 Hooks编程

作用 配合函数式编程,保证在不产生类的时候完成一个整体的组件 常用组件 useStateuseContextuseReduceruseEffectuseMemouseCallback 前三个值为自变量 后三者为因变量 前三者相当于其他编程函数的变量声明,而后三者相当于对变量进行了(if now ! pr…

logits是啥、傅里叶变换

什么是logtis? 在深度学习的上下文中,logits 就是一个向量,下一步通常被投给 softmax/sigmoid 的向量。。 softmax的输出是分类任务的概率,其输入是logits层。 logits层通常产生-infinity到 infinity的值,而softmax层…

Adobe Illustrator学习备忘

1.移动画板:需按住空格键加鼠标一块才能拖动 2.放大缩小画板:按住Alt键加鼠标滚轮 3.撤回:CtrlZ 4.钢笔练习网站:The Bzier Game

【初识】内网渗透——基础概念,基本工具使用

目录 一、域,工作组,域控制器,活动目录相关概念: 域环境: 工作组: 域控制器DC: 活动目录AD: 二、内网的基本场景: 三、内网渗透基本测试方案: #案例1一基本信…

remove_const的工作原理及c++的类型推导

author: hjjdebug date: 2025年 05月 21日 星期三 12:51:57 CST descrip: remove_const的工作原理及c的类型推导 文章目录 1. 简单的程序代码.2.std::remove_const_t 到底是怎样工作的?2.1 测试代码2.2 类型推导的调试手段.2.2.1 给类模板添加成员函数,让它打印信息…

人脸识别,使用 deepface + api + flask, 改写 + 调试

1. 起因, 目的, 感受: github deepface 这个项目写的很好, 继续研究使用这个项目,改写 api。增加一个前端 flask app 2. 先看效果 3. 过程: 大力改写原始项目中 api 这部分的代码, 原始项目的文件结构太繁杂了: 我把…

三维表面轮廓仪的维护保养是确保其长期稳定运行的关键

三维表面轮廓仪是一种高精度测量设备,用于非接触式或接触式测量物体表面的三维形貌、粗糙度、台阶高度、纹理特征等参数。其主要基于光学原理进行测量。它利用激光或其他光源投射到被测物体表面,通过接收反射光或散射光,结合计算机图像处理技…

Lambda表达式的高级用法

今天来分享下Java的Lambda表达式,以及它的高级用法。 使用它可以提高代码的简洁度,使代码更优雅。 一、什么是lambda表达式 Lambda 表达式是 Java 8 引入的特性,用于简化匿名内部类的语法,使代码更简洁,尤其在处理函…

31-35【动手学深度学习】深度学习硬件

1. CPU和GPU 1.1 CPU CPU每秒钟计算的浮点运算数为0.15,GPU为12。GPU的显存很低,16GB(可能32G封顶),CPU可以一直插内存。 左边是GPU(只能做些很简单的游戏,视频处理),中…