如何为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轴,显示的是数据点序号
需求
- 将X轴替换为固定的24小时刻度(例如00:00、02:00等)
- 当日未结束时,仅绘制已采集到的数据部分,但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
相关产品推荐
相关产品推荐

