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

Matplotlib结合Pandas DataFrame设置x轴显示月日格式日期标签问题

解决方案

你只需要借助matplotlib的日期刻度工具,手动指定x轴的刻度定位规则和显示格式即可实现需求,修改后完整代码如下:

import matplotlib.dates as mdates
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt

# 可删除前两行无用代码,避免生成多余空白图
# plt.plot(t, php) 
# plt.title('Electricity Load of heat pump at t')

fig, axes = plt.subplots(figsize=[25,7])
fig.subplots_adjust(bottom=0.2) 
tindex = np.arange(0,T)

dates = pd.date_range('20210104',periods=168, freq="H")
df = pd.DataFrame({'php1': php, 'dates': dates})

df.plot(kind='line',x='dates', y='php1',
        ax=axes, color ="red", linestyle='-', 
        linewidth=3, grid=True)
             
# 新增x轴刻度自定义代码
# 设置x轴主刻度间隔为1天
axes.xaxis.set_major_locator(mdates.DayLocator(interval=1))
# 设置x轴刻度显示格式为 月份缩写+日期+th 格式
axes.xaxis.set_major_formatter(mdates.DateFormatter('%b %dth'))
# 可选:调整刻度标签对齐方式避免重叠
plt.setp(axes.get_xticklabels(), ha='center')

axes.tick_params(axis='x', labelsize=15)
axes.tick_params(axis='y', labelsize=15) 
axes.get_legend().remove()
axes.set_ylabel('Power[kW]', fontsize=15)
axes.set_xlabel('Timeslot[Days] ', fontsize=15)

plt.show()

代码说明

  • mdates.DayLocator(interval=1):指定x轴每1天生成一个主刻度,刚好匹配7天的时间范围生成7个对应日期的刻度
  • mdates.DateFormatter('%b %dth'):自定义刻度显示格式,其中%b对应英文月份缩写(如Jan、Feb),%d对应两位数字日期,最终输出格式就是你需要的Jan 04th、Jan 05th样式

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 14:06:08