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

调整Vega-Lite瀑布图Y轴刻度及条形尺寸问题咨询

Vega-Lite瀑布图Y轴非零起始刻度适配方案

问题原因

仅修改Y轴scale.domain只会调整轴的显示范围,但瀑布图的条形高度默认基于0基准计算(即条形底部从0开始),因此条形尺寸不会跟随Y轴刻度变化,导致显示错位。

解决步骤

要让条形匹配非零起始的Y轴,需要同时调整Y轴配置和条形的绘制逻辑:

  1. 关闭Y轴的零基准强制
    在Y轴的scale设置中添加zero: false,避免Vega-Lite自动将0纳入刻度范围,确保你设置的domain生效。

  2. 调整条形的起始/结束值计算
    瀑布图的条形由y(起始值)和y2(结束值)决定,需让起始值基于数据的实际数值而非0,通过transform计算累积值来生成正确的起始/结束点。

示例代码

{
  "data": {
    "values": [
      {"step": "初始值", "value": 2000},
      {"step": "增长项1", "value": 1500},
      {"step": "增长项2", "value": 3500},
      {"step": "最终值", "value": 3000}
    ]
  },
  "transform": [
    // 计算累积值
    {"window": [{"field": "value", "op": "sum", "as": "cumulative"}], "sort": [{"field": "step"}]},
    // 计算每个条形的起始值(累积值减去当前项的值)
    {"calculate": "datum.cumulative - datum.value", "as": "start"}
  ],
  "mark": {"type": "bar", "tooltip": true},
  "encoding": {
    "x": {"field": "step", "type": "ordinal"},
    "y": {
      "field": "start",
      "type": "quantitative",
      "scale": {"domain": [2000, 10000], "zero": false}, // 关键配置:非零起始+指定范围
      "title": "数值"
    },
    "y2": {"field": "cumulative"},
    "color": {"field": "step", "type": "nominal"}
  }
}

关键说明

  • scale.zero: false是核心:没有这个配置,Vega-Lite会强制Y轴包含0,导致你设置的domain被覆盖。
  • 通过transform生成start字段:让每个条形的底部对应实际的数值起始点,顶部对应累积后的数值,这样条形的高度和位置会完全匹配Y轴的刻度范围。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 14:25:16