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

如何在Matplotlib图表X轴显示不规则Timestamp刻度?

解决方法:用不规则时间戳作为X轴标签绘制x-y曲线

原代码问题分析

  1. 直接设置set_xticklabels后未匹配对应刻度位置,后续的DateFormatter和MaxNLocator会导致标签与刻度错位
  2. 未处理数据中的inf值,可能引发绘图异常

修正后的代码

import matplotlib.pyplot as plt
import pandas as pd

# 清理含inf的行,避免绘图报错
abc = abc[~abc['y'].isin([float('inf'), float('-inf')])]

fig, ax = plt.subplots(nrows=1, ncols=1, sharex=False, dpi=400)
ax.plot(abc['x'], abc['y'], linewidth=1, color='black')

# 固定X轴刻度位置为x列的所有数值,确保每个数据点对应一个时间标签
ax.set_xticks(abc['x'])
# 将刻度标签替换为格式化后的时间戳
ax.set_xticklabels(abc['endTime'].dt.strftime('%H:%M:%S'))

# 调整标签显示样式
ax.tick_params(axis='both', which='major', labelsize=6)
for label in ax.get_xticklabels():
    label.set_ha('right')
    label.set_rotation(45)
    label.set_fontsize(5)

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

关键说明

  • set_xticks(abc['x']):强制X轴刻度与x列的每个数值对应,保证时间标签和数据点一一匹配
  • dt.strftime('%H:%M:%S'):将Timestamp类型的时间转为指定格式的字符串,避免时间显示过长
  • 若时间标签过于密集,可通过切片筛选显示,比如abc['x'][::2]和abc['endTime'][::2],每隔2个数据点显示一个标签

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 14:48:08