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

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.xdnf.cn/news/576937.html

相关文章:

  • C++ 输出流格式控制
  • 起重的技术
  • wd软件安装
  • origin绘图之【如何将横坐标/x设置为文字、字母形式】
  • 升级SpringBoot2到3导致的WebServices升级
  • 数字化,一个泛化的概念
  • 使用Mathematica生成随机曼陀罗花
  • vue3请求设置responseType: ‘blob‘,导致失败后获取不到返回信息
  • 基于vue框架的动漫论坛g2392(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。
  • ISO 26262-5 硬件验证
  • Python雷达图实战教程:从入门到精通
  • 磁盘分区与挂载——笔记
  • 深入理解Java虚拟机之垃圾收集器篇(垃圾回收器的深入解析待完成TODO)
  • 框架与组件版本备忘
  • LlamaIndex
  • Keepalived 基于 VRRP 的高可用设计与故障排查
  • 学习日记-day12-5.21
  • 牛客网 NC16407 题解:托米航空公司的座位安排问题
  • 操作系统 第四章 -1
  • 链表-反转链表
  • JUC并发编程(下)
  • P1090 [NOIP 2004 提高组] 合并果子
  • SpringBoot3集成Oauth2.1——3access_token使用
  • 大模型如何助力数学可视化?
  • 47道ES67高频题整理(附答案背诵版)
  • LVS_DR集群的基本原理和相关配置
  • 算法总结:双指针技巧
  • XXE由浅入深
  • SOC-ESP32S3部分:4-参数配置可视化menuconfig
  • 啤酒游戏与系统思考