按 Vega Lite 中的另一个字段对轴进行排序
Sort axis by another field in Vega Lite
我正在尝试通过与我用作标签的字段不同的字段对 x 轴上的序数数据进行排序。这两个字段(我称它们为 'sortable' 和 'nonsortable')是一对一的,这意味着一个是从另一个计算的,并且永远不会有一个 'sortable' 值将对应两个不同的'nonsortable'值,反之亦然。
我尝试了两种方法:
...
x: {
field: 'nonsortable',
sort: {
field: 'sortable',
op: 'count',
},
},
...
我不确定要使用哪个聚合操作,但由于这两个字段是一对一的,所以应该无关紧要吧?
这以我不理解的方式改变了顺序,但它肯定没有按预期按 'sortable' 字段对轴进行排序。
- 像这样更改 label to a different field:
...
x: {
field: 'sortable',
axis: {
labelExpr: 'datum.nonsortable',
},
}
...
这根本不起作用。我想也许我误解了标签表达式的工作原理。
是否有另一种方法可以做到这一点,或者是否有办法挽救这些尝试之一?
如果不需要聚合,则应传递不带聚合的 sort
属性。例如 (vega editor link):
{
"data": {
"values": [
{"sortable": 5, "nonsortable": "five"},
{"sortable": 2, "nonsortable": "two"},
{"sortable": 3, "nonsortable": "three"},
{"sortable": 1, "nonsortable": "one"},
{"sortable": 4, "nonsortable": "four"}
]
},
"mark": "point",
"encoding": {
"x": {
"type": "nominal",
"field": "nonsortable",
"sort": {"field": "sortable"}
}
}
}
我正在尝试通过与我用作标签的字段不同的字段对 x 轴上的序数数据进行排序。这两个字段(我称它们为 'sortable' 和 'nonsortable')是一对一的,这意味着一个是从另一个计算的,并且永远不会有一个 'sortable' 值将对应两个不同的'nonsortable'值,反之亦然。
我尝试了两种方法:
...
x: {
field: 'nonsortable',
sort: {
field: 'sortable',
op: 'count',
},
},
...
我不确定要使用哪个聚合操作,但由于这两个字段是一对一的,所以应该无关紧要吧?
这以我不理解的方式改变了顺序,但它肯定没有按预期按 'sortable' 字段对轴进行排序。
- 像这样更改 label to a different field:
...
x: {
field: 'sortable',
axis: {
labelExpr: 'datum.nonsortable',
},
}
...
这根本不起作用。我想也许我误解了标签表达式的工作原理。
是否有另一种方法可以做到这一点,或者是否有办法挽救这些尝试之一?
如果不需要聚合,则应传递不带聚合的 sort
属性。例如 (vega editor link):
{
"data": {
"values": [
{"sortable": 5, "nonsortable": "five"},
{"sortable": 2, "nonsortable": "two"},
{"sortable": 3, "nonsortable": "three"},
{"sortable": 1, "nonsortable": "one"},
{"sortable": 4, "nonsortable": "four"}
]
},
"mark": "point",
"encoding": {
"x": {
"type": "nominal",
"field": "nonsortable",
"sort": {"field": "sortable"}
}
}
}