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')
)
所以我的情况如下。我有 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')
)