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

如何在matplotlib.pyplot中调整时间型X轴刻度的显示频率为每小时?

用Matplotlib设置X轴每小时显示刻度的方法

核心思路

你的数据只有时间字符串,得先把它转换成Matplotlib能识别的datetime类型,再用专门的时间刻度定位器和格式化器实现每小时显示刻度。

完整代码示例

import pandas as pd
import matplotlib.pyplot as plt
from matplotlib.dates import HourLocator, DateFormatter

# 加载数据(这里用你的示例数据演示)
data = {
    'Time': ['14:03:00', '14:08:00', '14:13:00', '14:17:00', '14:22:00'],
    'SRH_1000m': [318, 321, 261, 312, 285]
}
df = pd.DataFrame(data)

# 把时间字符串转成datetime类型(自动补当日日期,不影响时间显示)
df['Time'] = pd.to_datetime(df['Time'])

# 创建画布和轴对象
fig, ax = plt.subplots(figsize=(10, 6))

# 绘制数据(这里用折线图,换成柱状图也可以)
ax.plot(df['Time'], df['SRH_1000m'], marker='o')

# 设置X轴主刻度为每小时
ax.xaxis.set_major_locator(HourLocator())
# 设置刻度显示格式,比如显示"14:00"这种整点格式
ax.xaxis.set_major_formatter(DateFormatter('%H:%M'))

# 旋转X轴标签,防止重叠
plt.xticks(rotation=45)

# 添加标签和标题
ax.set_xlabel('时间')
ax.set_ylabel('SRH_1000m')
ax.set_title('每小时刻度的时间序列图')

# 自动调整布局
plt.tight_layout()
plt.show()

关键说明

  1. 时间类型转换:pd.to_datetime会给纯时间字符串自动补充当前日期,但Matplotlib只关注时间部分,完全不影响刻度显示。如果数据跨多天,这个方法依然有效。
  2. 刻度定位器:HourLocator()会自动在整点位置生成刻度,哪怕你的数据里没有整点记录。
  3. 格式自定义:DateFormatter('%H:%M')可以改成'%H'只显示小时数,或者'%H:%M:%S'显示完整时间,按需调整即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.25 07:54:20