Python热力图绘制:数据到可视化的第三天探索

4天前发布 gsjqwyl
3 0 0

一、热力图的核心功用

热力图(Heatmap)是一种借助颜色浓淡来呈现数据密度或数值大小的可视化工具,其主要应用场景包含:

  • 数据矩阵的模式辨认(例如相关性剖析)
  • 用户行为热点剖析(例如网页点击热力图)
  • 地理区域数据散布(例如疫情病例密度)
  • 时间序列的周期性改变(例如电商订单时段散布)

二、技术预备

1. 装置必要库

pip install matplotlib seaborn pandas numpy

2. 数据预备

比如1:矩阵型数据(相关性剖析)
import numpy as np
import pandas as pd

# 生成随机数据(10个样本,5个特征)
data = pd.DataFrame(np.random.rand(10,5), columns=['A','B','C','D','E'])
# 核算相关系数矩阵
corr_matrix = data.corr()
print(corr_matrix.head())
比如2:地理型数据(区域出售数据)
geo_data = pd.DataFrame({
    '城市': ['北京','上海','广州','深圳','杭州'],
    '纬度': [39.90, 31.23, 23.13, 22.54, 30.26],
    '经度': [116.40, 121.47, 113.27, 114.05, 120.19],
    '销售额': [150, 200, 180, 220, 160]
})

三、绘制热力图的完好代码(含具体注释)

计划一:运用 Seaborn 绘制矩阵热力图

import seaborn as sns
import matplotlib.pyplot as plt

# 创建画布
plt.figure(figsize=(10,8))

# 绘制热力图
sns.heatmap(
    data=corr_matrix,         # 输入数据矩阵
    annot=True,               # 显现数值标签
    fmt=".2f",                # 数值保存两位小数
    cmap='coolwarm',          # 色彩映射计划(冷暖比照)
    linewidths=0.5,           # 分隔线宽度
    cbar_kws={'label': '相关系数'},  # 色彩条标签
    annot_kws={'fontsize':12}  # 标签字体巨细
)

# 设置标题和坐标轴标签
plt.title('特征相关性热力图', fontsize=14)
plt.xlabel('特征', fontsize=12)
plt.ylabel('特征', fontsize=12)

# 优化布局
plt.tight_layout()

# 保存并显现
plt.savefig('correlation_heatmap.png', dpi=300)
plt.show()

计划二:运用 Matplotlib 绘制地理热力图

from mpl_toolkits.basemap import Basemap

# 创建地图投影
plt.figure(figsize=(12,8))
m = Basemap(
    projection='merc',        # 墨卡托投影
    llcrnrlat=20,            # 左下角纬度
    urcrnrlat=40,            # 右上角纬度
    llcrnrlon=100,           # 左下角经度
    urcrnrlon=130,           # 右上角经度
    resolution='l'           # 地图精度
)

# 绘制海岸线和国家边界
m.drawcoastlines()
m.drawcountries()

# 转换经纬度坐标
x, y = m(geo_data['经度'].tolist(), geo_data['纬度'].tolist())

# 绘制热力点
m.scatter(
    x, y,
    s=geo_data['销售额']*5,    # 点巨细与销售额成正比
    c=geo_data['销售额'],     # 色彩映射销售额
    cmap='YlOrRd',           # 黄-红渐变
    alpha=0.6,               # 透明度
    edgecolors='w'           # 白色边框
)

# 添加色彩条
plt.colorbar(label='销售额(万元)', shrink=0.8)

# 设置标题
plt.title('中国主要城市销售额分布热力图', fontsize=14)

# 保存并显现
plt.savefig('geo_heatmap.png', dpi=300)
plt.show()

四、要害参数解读

参数名 效果阐明 常用值比如
data 输入数据矩阵 pandas.DataFrame 或 numpy 数组
cmap 色彩映射计划 ‘coolwarm’, ‘viridis’, ‘YlOrRd’
annot 是否显现数值标签 True/False
fmt 数值显现格局 ‘.2f’(两位小数)
linewidths 单元格边框宽度 0.5-1.0
alpha 透明度操控(地理热力图) 0.3-0.7
s 点巨细(地理热力图) 数值数组

五、成果解读技巧

  1. 色彩梯度剖析

    • 冷色调(蓝 / 绿)表明低数值区域
    • 暖色调(红 / 黄)表明高数值区域
    • 中心色表明中等数值
    • 矩阵热力图

    • 对角线元素为 1(自相关)

    • 越挨近 1 的数值表明正相关性越强
    • 越挨近 – 1 的数值表明负相关性越强
    • 地理热力图

    • 密布区域表明事务会集

    • 色彩深浅反映数值巨细
    • 点巨细表现第三维度数据

六、常见问题处理

  1. 数据标准化
from sklearn.preprocessing import MinMaxScaler
scaler = MinMaxScaler()
scaled_data = scaler.fit_transform(data)
  1. 处理 NaN 值
data = data.fillna(0)  # 填充0值
# 或
data = data.dropna()  # 删除缺失行
  1. 调整色彩规模
vmin=0, vmax=100  # 强制色彩规模

七、扩展运用

  1. 时间序列热力图
# 比如:电商订单时段散布
time_data = pd.read_csv('order_data.csv', parse_dates=['order_time'])
time_data['hour'] = time_data['order_time'].dt.hour
pivot_table = time_data.pivot_table(index='hour', columns='dayofweek', aggfunc='size')
sns.heatmap(pivot_table, cmap='Blues')
  1. 用户行为热力图
# 比如:网页点击热区
click_data = pd.read_csv('click_log.csv')
plt.figure(figsize=(12,8))
plt.hist2d(click_data['x'], click_data['y'], bins=50, cmap='Reds')
plt.colorbar(label='点击次数')

总结

热力图是数据可视化中的 “信息浓缩器”,经过色彩编码完成多维度数据的高效传达。掌握以下要点可提高图表质量:

  1. 挑选适宜的色彩映射计划(防止彩虹色系)
  2. 合理设置数值标签和边框
  3. 注意数据标准化和异常值处理
  4. 结合事务场景挑选矩阵 / 地理 / 时间型热力图

经过调整参数和组合其他图表类型(如折线图叠加),能够创造出更丰厚的可视化作用。主张读者根据实际数据特色灵活运用。

© 版权声明

相关文章

暂无评论

暂无评论...