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

matplotlib绘制datetime格式时间数据时如何设置x轴1小时间隔刻度

问题解决方法

核心问题有两个:一是你的time列大概率为字符串(object)类型,matplotlib无法将其识别为时间序列,导致你设置的HourLocator不生效,x轴会把所有行的时间都作为独立分类刻度渲染,自然会拥挤重叠;二是画布宽度不足,无法容纳24个小时刻度的展示。

修改步骤如下:

  • 第一步:将time列转换为datetime类型,让matplotlib可以识别时间格式
import pandas as pd
import matplotlib.pyplot as plt
import matplotlib.dates as mdates

# 转换时间列格式,%f对应毫秒部分
data['time'] = pd.to_datetime(data['time'], format='%H:%M:%S.%f')
  • 第二步:调整画布尺寸,给x轴刻度留出足够的横向展示空间,同时手动限定x轴范围为0点到23点
# 调整画布宽度为16英寸,高度6英寸,可根据展示需要调整尺寸
fig, ax = plt.subplots(figsize=(16, 6))
ax.plot(data['time'], data['temp'], label='实时温度')
ax.plot(data['time'], data['temp_mean'], color='red', label='平均温度')

# 设置x轴定位规则和显示格式
xformatter = mdates.DateFormatter('%H:%M')
xlocator = mdates.HourLocator(interval=1)
ax.xaxis.set_major_locator(xlocator)
ax.xaxis.set_major_formatter(xformatter)

# 手动限定x轴范围为当天0点到23点
start_time = pd.to_datetime('00:00:00', format='%H:%M:%S')
end_time = pd.to_datetime('23:00:00', format='%H:%M:%S')
ax.set_xlim(start_time, end_time)

# 调整x轴刻度样式,右对齐避免标签偏移
ax.tick_params(axis='x', rotation=45, labelsize=10)
# 自动适配x轴标签边距
fig.autofmt_xdate(rotation=45, ha='right')

# 可选:添加图例、自动调整整体边距避免标签被裁切
ax.legend()
plt.tight_layout()
plt.show()
  • 额外优化方案:如果调整后还是觉得刻度拥挤,可将HourLocator的间隔参数调为2小时,或者进一步放大figsize的宽度参数。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 14:24:03