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
相关产品推荐
相关产品推荐

