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

如何修改Matplotlib日期主刻度标签为Jan-23格式

解决Matplotlib日期刻度标签修改问题

方法一:统一修改月年格式模板

ConciseDateFormatter默认会将月、年分两行显示,你可以直接修改它的格式字典,指定月-年的单行显示样式:

fig, ax = plt.subplots(figsize=(12, 6), constrained_layout=True)

ax.xaxis.set_major_locator(mdates.MonthLocator(interval=1))
# 初始化格式化器并修改月年显示模板
formatter = mdates.ConciseDateFormatter(ax.xaxis.get_major_locator())
# formats索引2对应「月-年」的显示场景,%b是缩写月份,%y是两位年份
formatter.formats[2] = '%b-%y'
ax.xaxis.set_major_formatter(formatter)

ax.xaxis.set_minor_locator(mdates.MonthLocator(bymonthday=(15)))

data_toplot.plot(ax=ax)

for label in ax.get_xticklabels(which='major'):
    label.set(rotation=0, horizontalalignment='center')

方法二:单独修改指定刻度标签

如果只需要修改Jan\n2023这一个标签,可在绘图完成后遍历刻度标签,匹配目标文本并替换:

fig, ax = plt.subplots(figsize=(12, 6), constrained_layout=True)

ax.xaxis.set_major_locator(mdates.MonthLocator(interval=1))
ax.xaxis.set_major_formatter(
   mdates.ConciseDateFormatter(ax.xaxis.get_major_locator()))
ax.xaxis.set_minor_locator(mdates.MonthLocator(bymonthday=(15)))

data_toplot.plot(ax=ax)

for label in ax.get_xticklabels(which='major'):
    label.set(rotation=0, horizontalalignment='center')
    # 匹配目标标签文本并替换格式
    if label.get_text() == 'Jan\n2023':
        label.set_text('Jan-23')

补充说明

  • 方法一适合批量调整所有「月-年」类型的刻度标签,无需逐个匹配;
  • 方法二更精准,仅针对特定标签修改,适合只需要调整单个标签的场景。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 12:35:29