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

rrdtool如何正确显示双数值并配置大小适配的Y轴刻度

结论

该需求可以正常实现,你之前的问题是搞错了--right-axis参数的作用:这个参数只会修改右侧Y轴的刻度文字,不会对参与绘图的数值做任何缩放,所以才会出现小范围数值被大范围数值挤压到0刻度线附近的问题。

具体实现方法

核心逻辑是:先手动把右轴对应的数据集缩放到和左轴数据集相同的数值区间,再用--right-axis参数把右轴刻度反向换算回原始数值范围即可。
针对你给出的数值范围:左轴数据0-70,右轴数据0-800,操作步骤如下:

  • 计算缩放系数
    要让两组数据的绘图高度对齐,右轴原始值800对应左轴最大值70,因此右轴数据的绘图缩放系数为 70/800 = 0.0875;反向还原刻度的系数为其倒数 800/70 ≈ 11.4286。
  • 用CDEF生成缩放后的右轴绘图数据
    不要直接用右轴原始DEF数据绘图,通过CDEF完成数值缩放:
    # 定义左轴数据集(0-70范围)
    DEF:data_left=your_data.rrd:ds_left:AVERAGE
    # 定义右轴原始数据集(0-800范围)
    DEF:data_right_raw=your_data.rrd:ds_right:AVERAGE
    # 生成缩放后适配左轴绘图区间的右轴数据
    CDEF:data_right_scaled=data_right_raw,0.0875,*
    
  • 配置双Y轴参数
    右轴参数使用反向还原的系数,偏移量为0:
    --left-axis-label="第一组数据(0-70)"
    --right-axis-label="第二组数据(0-800)"
    --right-axis=11.4286:0
    # 可选:配置两侧轴的数值显示格式
    --left-axis-format="%1.0f"
    --right-axis-format="%1.0f"
    
  • 调用绘图指令
    左轴图形用原始左轴数据绘制,右轴图形用缩放后的右轴数据绘制:
    LINE2:data_left#c0392b:"第一组数值"
    LINE2:data_right_scaled#2980b9:"第二组数值"
    
效果验证

当第二组数值为500时,缩放后的绘图值为500*0.0875=43.75,对应左轴43.75的高度位置;第一组数值为10时,绘图位置在左轴10的高度,两者完全不会重叠贴线,右侧轴对应位置会正确标注500的刻度值,和实际数值匹配。

注意事项
  • 两个缩放系数不要搞反:CDEF是把右轴原始值缩到左轴的绘图区间,--right-axis是把绘图值反算成右轴原始刻度,二者互为倒数
  • 如果你的数据包含负数区间,需要同步调整--right-axis的偏移量参数,保证0基线对齐
  • 不要依赖--right-axis做数值缩放,这个参数从设计上就只处理刻度标注,不碰实际绘图数据

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 23:12:19