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

如何为Matplotlib设置基于当日时间戳的24小时X轴刻度

解决P1meter电力数据绘图的X轴刻度适配问题

背景

  • 使用P1meter读取电表/燃气表数据,获取时间戳及正负电力值(正表示用电,负表示太阳能发电过剩),所有数据存储在SQLite3数据库中
  • 通过Pandas执行以下SQL查询读取当日数据:
myquery="select timestamp tmstmp, verbruiknuw from v_p1data where substr(timestamp,1,10) == date()"
  • 读取数据后调用Matplotlib相关函数绘图:
data = pandas.read_sql(myquery, connection)
mpgraphs.netto_per_dag(data, values)
  • 数据每6分钟采集一次,单日最多有240个数据点;原绘图逻辑使用np.arange(len(data.tmstmp))生成X轴,显示的是数据点序号

需求

  1. 将X轴替换为固定的24小时刻度(例如00:00、02:00等)
  2. 当日未结束时,仅绘制已采集到的数据部分,但X轴仍保持0-24小时的完整范围

尝试失败的方案

曾尝试将时间戳转换为datetime对象、设置Matplotlib刻度定位器,但均未达到预期效果

最终实现代码

# 根据X轴总长度定义刻度位置
time_stamps = np.linspace(0, 240, 13)
# 定义对应的时间标签
time_labels = ["00:00", "02:00", "04:00", "06:00", "08:00", "10:00", "12:00", "14:00", "16:00", "18:00", "20:00", "22:00", "24:00"]
plt.xlim(0, 240)  # 固定X轴范围为0-240(对应单日最大数据点数)
plt.xticks(time_stamps, labels=time_labels, rotation='30')  # 替换X轴刻度与标签

内容的提问来源于stack exchange,提问作者Harry van der Wolf

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 06:15:44