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

如何在Matplotlib中设置X轴为小时刻度并仅显示时分?

如何在Matplotlib的X轴仅显示小时和分钟(格式如00:00、1:00...8:00)

针对你的需求,我们可以借助Matplotlib的日期格式化工具来实现。你的数据已经是datetime索引,所以只需要给X轴指定对应的日期格式和刻度间隔即可,下面是结合你现有代码的完整解决方案:


完整修改后的代码

import pandas as pd
import matplotlib.pyplot as plt
import matplotlib.dates as mdates

# 你的原有时间范围定义
von = pd.to_datetime("08.23.17 00:00", infer_datetime_format=True) # 时间格式:MM.DD.YY HH:MM
bis = pd.to_datetime("08.23.17 08:00", infer_datetime_format=True)
graph = solardaten[['FriWa_VL','FriWa_RL','FriWa_Vpunkt','Speicher_oben']].loc[von:bis]

# 原有样式设置
plt.rcParams.update({'lines.linewidth': 4}) # 增大绘图中的线条宽度
plt.rcParams.update({'font.size': 28})

# 绘制图表
a = graph.plot(figsize=[15,8])

# 核心:设置X轴的时间显示格式和刻度
# 1. 定义日期格式:这里用%H:%M表示24小时制的小时+分钟(如00:00、01:00)
#    如果想要不带前导零的小时(如1:00),根据系统调整:
#    - Linux/macOS: 使用'%-H:%M'
#    - Windows: 使用'%#H:%M'
time_formatter = mdates.DateFormatter('%H:%M')
a.xaxis.set_major_formatter(time_formatter)

# 2. 设置每小时显示一个刻度,匹配你的00:00到08:00时间范围
hour_locator = mdates.HourLocator(interval=1)
a.xaxis.set_major_locator(hour_locator)

# 可选:旋转X轴标签,避免文字重叠
plt.xticks(rotation=45)

# 显示图表
plt.show()

关键部分说明

  • DateFormatter:负责定义X轴上时间的显示格式,%H代表两位24小时制的小时(00-23),%M代表两位分钟(00-59)。如果想要更简洁的格式(比如1:00而非01:00),就用对应系统的格式符去掉前导零。
  • HourLocator:控制X轴刻度的间隔,interval=1表示每1小时生成一个刻度,刚好覆盖你需要的00:00到08:00的所有整点时刻。
  • 旋转标签:当刻度文字较多时,旋转45度可以避免标签重叠,提升可读性,这一步是可选的。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 12:06:40