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

RRDTOOL绘图疑问:如何偏移历史温度数据至当前时间轴对比

解决RRDtool同期温度对比曲线不显示的问题

你猜的没错,问题就是历史数据的时间轴和当前图表的时间轴完全不重叠:你定义的tempo2取的是now-60h到now-24h的数据,这部分时间区间和主图的now-36h到now没有交集,所以曲线根本画不出来。

要实现同期对比,得用RRDtool的SHIFT函数把历史数据的时间轴右移24小时,让它和当前36小时的时间段对齐。修改后的完整脚本如下:

/usr/bin/rrdtool graph "$PWD"/outday2.png \
--start now-36h --end now \
--alt-autoscale \
-w 425 -h 200 \
--full-size-mode \
--title "Last 36 hours (vs Previous 24h Period)" \
--color CANVAS#36393f00 \
--color BACK#36393f00 \
--color FONT#5b80e0 \
--color GRID#888888 \
--color MGRID#888888 \
--color SHADEA#36393f00 \
--color SHADEB#36393f00 \
--border 0 \
--x-grid HOUR:6:HOUR:80:HOUR:6:0:"%H:%M" \
--left-axis-format %2.0lf \
--watermark "$(date +'%a %b %d %H:%M %Z %Y')" \
DEF:tempo=/usr/local/bin/temp/tempo.rrd:tempo:AVERAGE \
# 取对应时间段的历史数据(长度和当前36小时一致)
DEF:tempo2=/usr/local/bin/temp/tempo.rrd:tempo:AVERAGE:start=now-60h:end=now-24h \
# 把历史数据时间轴右移24小时(86400秒),对齐当前时间段
CDEF:tempo2_shifted=tempo2,86400,SHIFT \
CDEF:up=tempo,0,*,0,EQ,0,1,IF \
TICK:up#3b455e:1.0 \
LINE2:tempo#5b80e0:"Current" \
# 用不同颜色绘制对比曲线,添加图例区分
LINE2:tempo2_shifted#e05b80:"Previous Period" \
GPRINT:tempo:AVERAGE:"            Average\:%2.1lf" \
GPRINT:tempo:MAX:"Maximum\:%2.0lf            " >/dev/null

关键修改说明:

  1. 时间范围匹配:tempo2取的是now-60h到now-24h,正好是36小时的历史数据,和当前图表的时间长度完全一致
  2. 时间轴偏移:通过CDEF:tempo2_shifted=tempo2,86400,SHIFT把历史数据的每个时间戳都加上24小时(86400秒),这样历史数据的“昨夜2点”就会对应当前图表的“昨夜2点”位置
  3. 视觉区分:把对比曲线改成不同颜色(#e05b80),并添加图例标签,方便区分两条曲线

这样修改后,就能在同一张图上看到当前36小时和前24小时同期的温度对比了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 22:07:50