Использование Vega Lite для отображения уже агрегированных данных - PullRequest
1 голос
/ 03 октября 2019

Я пытаюсь показать столбчатую диаграмму суммированных сумм с течением времени. Данные выглядят примерно так:

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

Я кодирую ось х в поле «дата». Мне нужно, чтобы столбик с датой 12345 был сложен так, чтобы одна часть была высотой 100, а другая, показанная другим цветом, была высотой 150.

Кажется, что Vega Lite ожидает необработанные данные , но это было бы слишком медленно. Я делаю это на стороне сервера, чтобы сэкономить время. Могу ли я кормить Vega Lite с ложечки агрегатами, как в моем примере выше?

1 Ответ

1 голос
/ 03 октября 2019

Вы можете использовать сгибное преобразование , чтобы сложить два столбца в один, а затем кодирование каналов позаботится обо всем остальном. Например ( 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

...