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

如何在x轴绘制hh:mm:ss格式时间并设置小时级刻度避免重叠

解决方案

依赖导入

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

步骤1:转换时间格式

直接将字符串格式的时间戳批量转换为datetime对象即可,10万条数据的转换效率足够,无需额外优化:
times = [datetime.strptime(t_str, "%H:%M:%S") for t_str in time]

注:新版matplotlib(≥3.3)已经原生支持datetime类型作为x轴输入,不需要手动调用date2num转换为数值格式。如果你的时间跨天,可在strptime格式中补充日期字段即可。

步骤2:配置x轴刻度并绘图

直接使用matplotlib内置的时间定位器和格式化器实现固定间隔的刻度显示:

# 创建画布
fig, ax = plt.subplots(figsize=(12, 6))
# 绘制测量值曲线
ax.plot(times, 你的测量值数组, linewidth=0.8)
# 配置x轴主刻度:每1小时显示一个刻度,需要2小时间隔就将interval改为2
ax.xaxis.set_major_locator(mdates.HourLocator(interval=1))
# 配置x轴刻度显示格式为 时:分:秒
ax.xaxis.set_major_formatter(mdates.DateFormatter("%H:%M:%S"))
# 自动旋转刻度标签避免重叠
plt.xticks(rotation=45, ha="right")
# 可选:强制限定x轴范围为你的数据时间区间,避免空白
ax.set_xlim(times[0], times[-1])
# 自动调整布局避免标签被截断
plt.tight_layout()
plt.show()

可选优化建议

  • 10万条原始数据直接绘图可能出现曲线过密、渲染卡顿的问题,可先按时间下采样(比如取每10秒的平均值)后再绘图,展示效果更清晰
  • 如果需要添加次要刻度(比如15分钟间隔的小刻度),可调用ax.xaxis.set_minor_locator(mdates.MinuteLocator(interval=15))实现

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 17:39:03