Vega statistics 获取 Transform 结果作为对象

Vega statistics Get Transform result as an object

我想在 Vega 中使用变换并将结果作为对象获取。类似于link中的例子: https://vega.github.io/vega/docs/transforms/aggregate/ 我想得到输出,例如:[{"v": 2, "s": 6, "m": 2}],并在其他计算中使用它。所以我不想加载到可视化前。图表。我想得到结果对象并对其进行处理。我可以这样做吗

步骤如下:

  1. 对于 Vega 规范,只需包含具有转换的数据块。
  2. 运行 Vega 创建 Vega“视图”的常用方法。
  3. 在javascript中,使用Vega View API's data method获取转换后的数据集对象。

这是一个完整的工作示例(html 和 javascript),使用来自 Vega aggregate 的示例。

<!DOCTYPE html>
<html>
  <head>
    <meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
    <title>Test Vega5</title>
  </head>
  <body>
    <div id="vis"></div>
  </body>
  <script src="https://vega.github.io/vega/vega.js"></script>

  <script>
    
    let vegaSpec = {
      "$schema": "https://vega.github.io/schema/vega/v5.json",
      
      "data": [
        {
          "name": "mydata",
          "values" : [
              {"foo": 1, "bar": 1},
              {"foo": 1, "bar": 2},
              {"foo": null, "bar": 3}
            ],
          "transform": [
            {
              "type": "aggregate",
              "fields": ["foo", "bar", "bar"],
              "ops": ["valid", "sum", "median"],
              "as": ["v", "s", "m"]
            }
          ]
        }
      ]
    };

    let vegaView = new vega.View(vega.parse(vegaSpec))
      .logLevel(vega.Warn)
      .initialize("#vis")
      .renderer("svg")
      .hover()
      .run();

    let my_transformed_data = vegaView.data("mydata");  //  vega view API
    console.log(my_transformed_data);
  </script>
</html>

console.log 输出: