You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Vega中转换嵌套JSON数据以绘制Days-Value折线图?

Vega数据转换:提取groups并生成折线图所需表格格式

问题背景

原始JSON数据格式:

{"groups":[{"days":[17,22,23,27,31],"experiment":"S1","value":[[19.77,23.92,22.19,20.47,25.85],[21.78,21.33,19.35,19.06,21.38],[18.86,24.47,19.40,20.50,24.13]]},{"days":[18,23,24,29,31],"experiment":"S2","value":[[12.77,24.92,27.19,21.47,29.85],[21.78,21.33,19.35,19.06,21.38],[18.86,24.47,19.40,20.50,24.13]]}, {"days":[27,32,33,37,41],"experiment":"S3","value":[[19.77,23.92,22.19,20.47,25.85],[21.78,21.33,19.35,19.06,21.38],[18.86,24.47,19.40,20.50,24.13]]}],"individuals":[]}

需求:将数据转换为包含experiment、day(原days数组拆分后)、value(原嵌套数组拆分后)的表格格式,用于绘制折线图。

现有数据加载代码:

"data": [
{
  "name": "table",
  "url": "path_to_json", 
  "transform": [
  ## 需要在此添加筛选groups并丢弃individuals的转换步骤 
  {
    "type": "flatten",
    "fields": ["value"],
    "as": ["value"]
  },
  {
    "type": "flatten",
    "fields": ["value", "days"],
    "as": ["value", "day"]
  }]
}

解决方案

在现有转换流程的最开头添加两个步骤,实现提取groups数据并丢弃无关字段:

完整转换代码如下:

"data": [
{
  "name": "table",
  "url": "path_to_json", 
  "transform": [
    {
      "type": "flatten",
      "fields": ["groups"],
      "as": ["group"]
    },
    {
      "type": "project",
      "fields": ["group.experiment", "group.days", "group.value"],
      "as": ["experiment", "days", "value"]
    },
    {
      "type": "flatten",
      "fields": ["value"],
      "as": ["value"]
    },
    {
      "type": "flatten",
      "fields": ["value", "days"],
      "as": ["value", "day"]
    }
  ]
}
]

步骤说明

  • 第一步flatten:将原始数据顶层的groups数组展开,每个数组元素(单个实验组数据)转为独立条目,用group字段存储。
  • 第二步project:从group字段中提取experiment、days、value属性并重命名为对应字段,自动丢弃原始数据的individuals字段和临时group字段。
  • 后续两个flatten步骤:继续拆分嵌套的value数组,最终生成每行对应一组experiment、day、value的表格格式,满足折线图的数据要求。

内容的提问来源于stack exchange,提问作者Osman Mamun

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.26 22:07:39