如何在Vega-Lite中设置动态的x轴domainMax?
解决Vega-Lite流式图表x轴domainMax动态设置问题
你遇到的datum is not defined错误,是因为datum只能在数据点级别的表达式上下文(比如标记样式、条件编码等场景)中使用,而在scale的domain配置里,这个上下文并不存在,没法直接通过datum访问数据字段。
要实现x轴domainMax始终比数据最大值大1,你需要直接引用整个数据集来计算最大值,用Vega的data()函数获取数据源,再配合max()函数计算。修改后的x轴编码配置如下:
"encoding": { "x": { "field": "time", "type": "quantitative", "scale": { "domainMax": { "expr": "max(data('source_0'), d => d.time) + 1" } } } }
补充说明:
source_0是Vega-Lite默认生成的数据源名称,如果你的图表自定义了数据源名称(比如在data配置中设置了name属性),需要把source_0替换成对应的名称。- 该表达式会动态计算当前流式数据中
time字段的最大值,再加1作为x轴的最大定义域,适配数据实时更新的场景。
内容的提问来源于stack exchange,提问作者P JMU
相关产品推荐
相关产品推荐

