errorband 和嵌套属性的问题

问题描述

我在使用 errorband 标记类型时遇到了一些问题。它似乎只适用于数据顶层的字段。就我而言,数据在嵌套属性中具有预先聚合的统计信息。我已经修改了文档中的 errorband 示例以显示问题:

{
  "$schema": "https://vega.github.io/schema/vega-lite/v5.json","data": {
    "values": [
      {"stddev" : {"upper": 34.5007,"lower": 30.6912},"center": 32.5735,"Year": 189302400000,"mfg": "Toyota"},{"stddev" : {"upper": 36.8214,"lower": 31.8554},"center": 34.375,"Year": 220924800000,{"stddev" : {"upper": 37.4472,"lower": 32.9749},"center": 35.0611,"Year": 252460800000,{"stddev" : {"upper": 38.7074,"lower": 33.6203},"center": 36.0931,"Year": 283996800000,{"stddev" : {"upper": 23.5007,"lower": 19.6912},"center": 21.5735,"mfg": "Ford"},{"stddev" : {"upper": 25.8214,"lower": 20.8554},"center": 23.375,{"stddev" : {"upper": 26.4472,"lower": 21.9749},"center": 24.0611,{"stddev" : {"upper": 27.7074,"lower": 22.6203},"center": 25.0931,"mfg": "Ford"}
    ]
  },"layer": [
    {
      "mark": {
        "type": "errorband"
      },"encoding": {
        "y": {
          "field": "stddev.upper","type": "quantitative","scale": {"zero": false},"title": "Mean of Miles per gallon (95% CIs)"
        },"y2": {"field": "stddev.lower"},"x": {"field": "Year","timeUnit": "year"},"color": {"field": "mfg","type": "nominal"}
      }
    },{
      "mark": "line","encoding": {
        "color": {"field": "mfg","type": "nominal"},"y": {"field": "center","type": "quantitative"},"timeUnit": "year"}
      }
    }
  ]
}

vega-editor 中的日志显示它正在寻找名为 lower_stddev.upperupper_stddev.upper 的字段:

    [Warning] Infinite extent for field "lower_stddev.upper": [Infinity,-Infinity]
    [Warning] Infinite extent for field "upper_stddev.upper": [Infinity,-Infinity]

我尝试更改标记配置中的 extent,但无济于事。

我看到 vega一个 project 转换,它看起来有助于展平这些嵌套的属性,但 vega-lite 中似乎没有这种转换。

提前致谢。

解决方法

发现按照文档中的描述解压缩 errorband 宏工作正常。此外,calculate 转换有效:

"transform": [
  {"calculate": "datum.stddev.upper","as": "upper"},{"calculate": "datum.stddev.lower","as": "lower"}
]