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
关键修改说明:
- 时间范围匹配:
tempo2取的是now-60h到now-24h,正好是36小时的历史数据,和当前图表的时间长度完全一致 - 时间轴偏移:通过
CDEF:tempo2_shifted=tempo2,86400,SHIFT把历史数据的每个时间戳都加上24小时(86400秒),这样历史数据的“昨夜2点”就会对应当前图表的“昨夜2点”位置 - 视觉区分:把对比曲线改成不同颜色(
#e05b80),并添加图例标签,方便区分两条曲线
这样修改后,就能在同一张图上看到当前36小时和前24小时同期的温度对比了。
内容的提问来源于stack exchange,提问作者Jim
相关产品推荐
相关产品推荐

