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

Seaborn热力图X轴日期格式设置失效问题求助

解决Seaborn热力图X轴日期格式不生效的问题

问题根源:使用pivot_table后,DataFrame的日期列虽为datetime类型,但Seaborn绘制热力图时会将其转换为字符串分类标签,而非matplotlib可识别的日期轴对象,因此直接用DateFormatter无法生效。

修正后的代码

# Import library
import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt
from matplotlib.dates import DateFormatter

# initialize list of lists
data = [
        ['15-12-2023', 'Australia', 78], 
        ['15-12-2023', 'Europe', 98],
        ['15-12-2023', 'Mexico', 65],
        ['15-12-2023', 'Peru', 87],
        ['17-12-2023', 'Australia', 73],
        ['17-12-2023', 'Europe', 95],
        ['17-12-2023', 'Mexico', 84],
        ['17-12-2023', 'Peru', 68],
        ['16-12-2023', 'Australia', 90],
        ['16-12-2023', 'Europe', 91],
        ['16-12-2023', 'Mexico', 94],
        ['16-12-2023', 'Peru', 93],
    ]

# Create the pandas DataFrame
df = pd.DataFrame(data, columns=['createdtime', 'Region', 'SuccessRate'])
df['createdtime'] = pd.to_datetime(df['createdtime'], format='%d-%m-%Y', errors='raise')
df = df.sort_values('createdtime', ascending=False)
df = df.pivot_table(index="Region", columns="createdtime", values="SuccessRate", fill_value=0)

# plot the heatmap
fig, (ax) = plt.subplots(1, 1, figsize=(3, 3))
sns.set()
sns.heatmap(df, 
            cmap="YlOrRd_r", 
            annot=True, 
            linewidths=.1, 
            fmt='.2f', 
            square=True, 
            cbar=False, 
            annot_kws={
                'fontsize' : 9 })

# 修正X轴日期格式
# 获取当前X轴的datetime标签并转换格式
formatted_dates = [date.strftime("%d-%m") for date in df.columns]
# 设置X轴刻度标签
ax.set_xticklabels(formatted_dates)

plt.show()

关键修改点

  • 放弃DateFormatter,直接操作热力图的X轴刻度标签:
    1. 从df.columns取出原始的datetime列对象
    2. 用strftime("%d-%m")将每个datetime对象格式化为目标字符串
    3. 通过ax.set_xticklabels()替换原有的刻度标签

这样就能让X轴显示指定的日-月格式日期。

内容的提问来源于stack exchange,提问作者Subhendu De

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.02 20:01:19