问题描述
我在使用 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.upper
和 upper_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"}
]