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

如何将多级索引Series绘图的X轴刻度改为月份名称?

多级索引Series绘图替换X轴为月份名称的方案

方案1:预处理索引后绘图

先把多级索引里的数字月份替换成英文名称,再绘图并调整刻度避免重复显示:

import pandas as pd
import calendar
import matplotlib.pyplot as plt

# 提取外层month索引,映射为英文月份名称
month_names = [calendar.month_name[month] for month in series.index.get_level_values('month')]
# 重构多级索引,替换原month字段为名称
new_idx = pd.MultiIndex.from_tuples(
    zip(month_names, series.index.get_level_values('day')),
    names=['month', 'day']
)
series_renamed = series.reindex(new_idx)

# 绘图
ax = series_renamed.plot.line(figsize=(20,10))

# 只保留每个月份的第一个刻度位置
unique_months = series_renamed.index.get_level_values('month').unique()
tick_positions = [series_renamed.index.get_loc((m, series_renamed.index.get_level_values('day')[series_renamed.index.get_level_values('month') == m][0])) for m in unique_months]
ax.set_xticks(tick_positions)
ax.set_xticklabels(unique_months)

plt.show()

方案2:直接修改已绘制的坐标轴

如果已经执行了绘图代码,无需重新绘图,直接获取坐标轴对象修改刻度:

import calendar
import matplotlib.pyplot as plt

# 先执行你的原有绘图代码
ax = series.plot.line(figsize=(20,10))

# 提取唯一数字月份并排序,映射为英文名称
sorted_months = sorted(series.index.get_level_values('month').unique())
month_labels = [calendar.month_name[m] for m in sorted_months]

# 定位每个月份第一个数据点的位置作为刻度点
tick_pos = []
for m in sorted_months:
    first_day = series.index.get_level_values('day')[series.index.get_level_values('month') == m][0]
    tick_pos.append(series.index.get_loc((m, first_day)))

# 替换X轴刻度和标签
ax.set_xticks(tick_pos)
ax.set_xticklabels(month_labels)

plt.show()

补充说明

  • 如果你的month索引不是1-12的数字格式,需要自定义映射字典,示例:
    month_map = {
        1: 'January', 2: 'February', 3: 'March', 4: 'April',
        5: 'May', 6: 'June', 7: 'July', 8: 'August',
        9: 'September', 10: 'October', 11: 'November', 12: 'December'
    }
    
    之后把代码里的calendar.month_name[m]替换为month_map[m]即可。
  • 若希望X轴更简洁,可根据需求调整刻度的显示频率或位置。

内容的提问来源于stack exchange,提问作者Mohd yousuf khan

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 06:42:17