Vega-Lite:如何按字段求和并将其用作类别

Vega-Lite: How to sum by a field and use it as a category

所以我的情况如下。我有 60.000 张图片,它们使用 4 个模型进行了训练。每个模型都试图预测图像中的内容,因此我最终得到一个数据集,其中包含每个图像出现 4 次的位置。现在,我想根据有多少模型能够正确地对每个图像进行分组。换句话说,一幅图像可能在所有 4 个模型,还有一个在所有 4 个中都错误,所以第一个应该在类别 4 中,第二个应该在类别 1 中。

我如何使用 Vega-Lite 执行此操作(我知道我可以预处理数据,但我想直接使用 Vega-Lite 执行此操作)。我尝试了以下方法,但没有成功:

vl.markPoint()
    .data(data)
    .transform(
      vl.groupby('image_id'),
      vl.joinaggregate( [{
      "op": "sum",
      "field": "acc",
      "as": "totalacc"}]),
      vl.calculate("datum.totalacc").as('total')
    )
    .encode(
      vl.y().sum('acc'),
      vl.x().fieldQ('total'),
      vl.detail().fieldQ('image_id')
    ).render();

vl.groupby() 本身不会对数据做任何事情。我怀疑您可能想要的转换是这样的:

    .transform(
      vl.groupby('image_id')
        .joinaggregate([{
          "op": "sum",
          "field": "acc",
          "as": "totalacc"
        }]),
      vl.calculate("datum.totalacc").as('total')
    )