You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Python绘制X轴为日期、Y轴为时间的热力图?

解决热力图仅显示单日期的问题

核心问题排查与解决步骤

1. 修正日期格式(关键前提)

如果day列带时间戳(比如2024-05-20 14:30:00),会被识别为不同的日期条目,导致无法按自然日分组。需提取纯日期部分:

import pandas as pd

# 读取数据(替换为你的数据文件路径)
df = pd.read_csv("data.csv")

# 转换为日期格式并提取纯日期
df['day'] = pd.to_datetime(df['day']).dt.date
# 处理时间列(若为字符串格式,转换为标准时间类型)
df['time'] = pd.to_datetime(df['time']).dt.time

2. 构建符合热力图要求的二维数据结构

热力图需要行=时间、列=日期的二维表,通过透视表整理数据:

# 以统计每个日期-时间组合的记录数为例,可替换为你的目标数值列
pivot_data = df.pivot_table(
    index='time', 
    columns='day', 
    values='目标数值列',  # 替换为你要展示的字段(如频次、温度等)
    aggfunc='count',  # 聚合方式,按需选sum/mean等
    fill_value=0
)

3. 绘制热力图

使用Seaborn生成符合需求的热力图:

import seaborn as sns
import matplotlib.pyplot as plt

plt.figure(figsize=(12, 8))
sns.heatmap(pivot_data, cmap='YlOrRd', annot=True, fmt='d')
plt.xlabel('日期')
plt.ylabel('时间')
plt.title('日期-时间热力图')
plt.xticks(rotation=45)  # 旋转日期标签避免重叠
plt.tight_layout()
plt.show()

常见问题定位

  • 若仍显示单日期:检查原始数据是否真的包含多日期记录,若数据本身只有单日样本,需补充多日期数据。
  • 时间轴乱序:可对时间按小时排序,简化展示维度:
    df['time_hour'] = pd.to_datetime(df['time']).dt.hour
    pivot_data = df.pivot_table(index='time_hour', columns='day', ...)
    

内容的提问来源于stack exchange,提问作者saikat ghosh

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.11 19:45:30