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

如何调整Seaborn热力图X轴月份为Jan到Dec的自然排序?

解决方案

你遇到的X轴月份顺序混乱是因为pandas默认对字符串类型的列按字典序排序,无法识别月份的自然先后顺序,把Month列转为有序分类类型即可解决,修改后完整代码如下:

import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
sns.set_theme()

data=df.rename(columns={0:'Year', 1:'Month', 2:'Count'})

# 定义月份自然顺序,注意和你数据里的月份缩写写法保持一致
month_order = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'June', 'July', 'Aug', 'Sept', 'Oct', 'Nov', 'Dec']
# 将Month列转为有序分类类型,指定排序规则
data['Month'] = pd.Categorical(data['Month'], categories=month_order, ordered=True)

data= pd.pivot_table(data, values='Count', index='Year', columns='Month')
f, ax = plt.subplots(figsize=(15, 6))
sns.heatmap(data, annot=True, fmt="d", linewidths=.5, ax=ax)
plt.show()

补充说明

  • 如果你数据里的九月是Sep而非Sept、六月/七月是Jun/Jul而非June/July,对应调整month_order列表里的元素即可,要保证和数据中的写法完全匹配。
  • 如果需要X轴按月份降序排列,直接把顺序列表反转即可:
    month_order = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'June', 'July', 'Aug', 'Sept', 'Oct', 'Nov', 'Dec'][::-1]
    
  • 设置有序分类后,生成透视表时pandas会自动按照指定的分类顺序排列列,无需额外排序操作,生成的热力图X轴就会符合预期。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 02:36:03