使用Vega Lite显示已经聚合的数据

时间:2019-10-03 05:07:41

标签: vega-lite

我正在尝试显示一段时间内堆积的总和条形图。数据看起来像这样:

[
  {
    "date": 12345,
    "sumA": 100,
    "sumB": 150
  },
  ...
]

我正在将x轴编码为“日期”字段。我需要将日期为12345的条形图堆叠起来,其中一部分的高度为100,而另一种颜色的高度为150。

Vega Lite seems to expect the raw data,但这太慢了。我在服务器端进行此汇总以节省时间。我可以像上面的示例一样用勺子喂Vega Lite骨料吗?

1 个答案:

答案 0 :(得分:1)

您可以使用fold transform将两列折叠为一列,然后由通道编码处理其余部分。例如(vega editor):

{
  "data": {
    "values": [
      {"date": 1, "sumA": 100, "sumB": 150},
      {"date": 2, "sumA": 200, "sumB": 50},
      {"date": 3, "sumA": 80,  "sumB": 120},
      {"date": 4, "sumA": 120, "sumB": 30},
      {"date": 5, "sumA": 150, "sumB": 110}
    ]
  },
  "transform": [
    {"fold": ["sumA", "sumB"], "as": ["column", "value"]}
  ],
  "mark": {"type": "bar"},
  "encoding": {
    "x": {"type": "ordinal", "field": "date"},
    "y": {"type": "quantitative", "field": "value"},
    "color": {"type": "nominal", "field": "column"}
  }
}

enter image description here