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

Python中Matplotlib时间序列X轴标签间距调整问题

解决Matplotlib中小时分钟级时间序列X轴标签间距问题

从你提供的图和代码来看,X轴标签挤在一起的核心问题有两个:用了不匹配时间粒度的刻度定位器,还强制把所有数据点都设成了刻度。下面是具体的修复方案:

问题分析

  1. 你用了mdates.DayLocator(interval=1),但你的数据是小时/分钟级的,这个定位器只会按天生成刻度,完全不匹配你的时间粒度。
  2. plt.xticks(date_time)这行代码会强制把所有时间数据点都设为X轴刻度,直接导致标签重叠拥挤,这是必须删掉的。

修复后的代码

import matplotlib.dates as mdates
import matplotlib.pyplot as plt

title = "Energy plots for " + escalators[0].split(".")[0]
label = 'kWh'

xe = plt.figure(figsize=(30, 15))
plt.title(title)
plt.ylabel(label)
plt.plot(date_time, y, 'kp-', markersize=3, linewidth=0.5)

ax = plt.gca()
# 设置X轴标签格式为小时:分钟:秒
ax.xaxis.set_major_formatter(mdates.DateFormatter('%H:%M:%S'))
# 根据数据粒度选择定位器:比如每2小时显示一个刻度
ax.xaxis.set_major_locator(mdates.HourLocator(interval=2))
# 如果是分钟级数据,也可以用MinuteLocator,比如每30分钟一个刻度
# ax.xaxis.set_major_locator(mdates.MinuteLocator(interval=30))

# 自动旋转X轴标签,避免重叠
plt.gcf().autofmt_xdate()
# 设置刻度字体大小
plt.rc('xtick', labelsize=12)
# 调整底部边距,防止标签被截断
plt.subplots_adjust(bottom = 0.1)

plt.show()

关键改动说明

  • 替换DayLocator为HourLocator或MinuteLocator:根据你的时间数据密度选择合适的interval参数(比如每2小时、每30分钟),控制刻度的间隔。
  • 删除plt.xticks(date_time):让Matplotlib根据你设置的定位器自动生成合适数量的刻度,避免所有点都显示。
  • 保持autofmt_xdate():自动旋转X轴标签,进一步提升可读性。

你提供的示意图:
X轴标签拥挤示意图

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 21:48:31