在Vega Lite中按另一个字段对轴进行排序

时间:2019-10-30 18:46:06

标签: vega vega-lite

我正在尝试按与我用作标签的字段不同的字段对x轴上的顺序数据进行排序。两个字段(我将它们称为“可排序”和“不可排序”)都是一对一的,这意味着一个字段是从另一个字段计算得出的,并且永远不会出现一个“可排序”值对应于两个不同“不可排序”值的情况值,反之亦然。

我尝试了两种方法:

  1. 像这样更改sort order to use a different field
...
x: {
  field: 'nonsortable',
  sort: {
    field: 'sortable',
    op: 'count',
  },
},
...

我不确定要使用哪个聚合运算,但是由于两个字段是一对一的,那应该没关系吗?

这以一种我不了解的方式改变了顺序,但是它肯定没有按预期对“可排序”字段进行轴排序。

  1. 像这样更改label to a different field
...
x: {
  field: 'sortable',
  axis: {
    labelExpr: 'datum.nonsortable',
  },
}
...

这根本不起作用。我想也许我误解了标签表达式的工作原理。

是否有另一种方法可以执行此操作,或者可以挽救其中一种尝试?

1 个答案:

答案 0 :(得分:1)

如果不需要聚合,则应传递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"}
    }
  }
}

enter image description here