Vega-Lite如何将值为0的水平线锚定在图表底部而非中间?
解决Vega-Lite全0数据线条居中问题
当所有数据点的value均为0时,Vega-Lite会自动计算y轴范围,导致线条居中显示。要将线条锚定在图表底部,只需强制设置y轴的起始值为0即可,有两种常用方式:
方法一:固定y轴最小刻度
在y轴的编码配置中添加scale.domainMin: 0,强制y轴从0开始,同时保留后续数据变化时y轴自动扩展的能力:
{ "$schema": "https://vega.github.io/schema/vega-lite/v5.json", "data": { "values": [ { "date": "2022-07-27 4:20", "value": 0 }, { "date": "2022-07-27 4:21", "value": 0 }, { "date": "2022-07-27 4:22", "value": 0 }, { "date": "2022-07-27 4:23", "value": 0 }, { "date": "2022-07-27 4:24", "value": 0 }, { "date": "2022-07-27 4:25", "value": 0 }, { "date": "2022-07-27 4:26", "value": 0 }, { "date": "2022-07-27 4:27", "value": 0 }, { "date": "2022-07-27 4:28", "value": 0 }, { "date": "2022-07-27 4:29", "value": 0 }, { "date": "2022-07-27 4:30", "value": 0 }, { "date": "2022-07-27 4:31", "value": 0 }, { "date": "2022-07-27 4:32", "value": 0 }, { "date": "2022-07-27 4:33", "value": 0 }, { "date": "2022-07-27 4:34", "value": 0 }, { "date": "2022-07-27 4:35", "value": 0 }, { "date": "2022-07-27 4:36", "value": 0 }, { "date": "2022-07-27 4:37", "value": 0 }, { "date": "2022-07-27 4:38", "value": 0 }, { "date": "2022-07-27 4:39", "value": 0 } ] }, "encoding": { "x": { "field": "date", "type": "temporal" }, "y": { "field": "value", "type": "quantitative", "scale": { "domainMin": 0 } } }, "mark": { "type": "line" } }
方法二:直接指定y轴范围
如果希望y轴仅显示0刻度,可直接设置scale.domain: [0, 0],完全固定y轴范围:
"y": { "field": "value", "type": "quantitative", "scale": { "domain": [0, 0] } }
两种方式都能让全0数据的线条对齐到图表底部,可根据后续数据需求选择对应方案。
内容的提问来源于stack exchange,提问作者woolyninja
相关产品推荐
相关产品推荐

