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

如何在Matplotlib中设置X轴时间戳格式为%Y-%m-%d %H:%M并指定刻度

解决Matplotlib时间轴自定义刻度与格式的问题

我来帮你搞定这个时间轴显示的问题~默认情况下Matplotlib会自动根据数据范围生成刻度,所以才会出现那些每隔5分钟的标签。要实现你想要的效果,我们需要手动指定刻度位置,同时设置自定义的时间格式。

修改后的完整代码

import datetime
import matplotlib.pyplot as plt
from matplotlib import style
from matplotlib.dates import DateFormatter  # 导入时间格式化工具

style.use('fivethirtyeight')

# 原始数据
ts = [datetime.datetime(2018, 5, 23, 14, 0), 
      datetime.datetime(2018, 5, 23, 14, 15), 
      datetime.datetime(2018, 5, 23, 14, 30)]
values = [3, 7, 6]

plt.plot(ts, values, 'o-')

# 1. 指定X轴要显示的刻度位置(就是你给定的三个时间点)
plt.xticks(ts)
# 2. 创建时间格式化器,设置你需要的格式
date_formatter = DateFormatter("%Y-%m-%d %H:%M")
# 3. 获取当前坐标轴,应用格式化器
ax = plt.gca()
ax.xaxis.set_major_formatter(date_formatter)

# 可选:旋转刻度标签,避免重叠(如果标签较长的话很有用)
plt.xticks(rotation=45)

plt.tight_layout()  # 自动调整布局,防止标签被截断
plt.show()

关键步骤解释

  • 指定刻度位置:plt.xticks(ts) 强制Matplotlib只使用你提供的ts列表中的时间点作为X轴刻度,替代自动生成的刻度。
  • 定义时间格式:DateFormatter("%Y-%m-%d %H:%M") 创建格式化器,设置你需要的年-月-日 时:分显示格式。
  • 应用格式化器:ax.xaxis.set_major_formatter(date_formatter) 把自定义格式应用到X轴,让刻度按指定样式显示。
  • 优化可读性:plt.xticks(rotation=45) 旋转标签避免重叠,plt.tight_layout() 自动调整布局防止标签被截断。

这样修改后,你的图表X轴就只会显示2018-05-23 14:00、2018-05-23 14:15和2018-05-23 14:30这三个指定的时间点,格式也完全符合你的要求啦~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 10:05:53