Легенда Vega-lite для многопольных данных - PullRequest
0 голосов
/ 06 ноября 2019

У меня есть данные, отформатированные с несколькими полями на x:

x1 f1 f2 f3
x2 f4 f5 f6
...

Это позволяет мне использовать всплывающие подсказки с настраиваемым форматированием (показывая все значения для одного x), чтобы я мог настроить меткудля каждого поля. ссылка на образец .

Я хотел бы добавить легенду, чтобы показать значение цветов, но я не могу сделать одну автоматическую генерацию для нескольких полей. Я думал о добавлении второго набора данных с дискретными значениями для полей и цветов (что-то вроде this ), но, очевидно, вы не можете добавить несколько наборов в vega-lite, и я не знаю достаточно, чтобыперейти к чистой Вега. Это возможно?

1 Ответ

0 голосов
/ 06 ноября 2019

Лучший способ создать легенду из нескольких столбцов - использовать Fold Transform , чтобы сложить их в один столбец, а затем позволить кодировкам обрабатывать легенду за вас. Изменение примера, на который вы ссылаетесь, может выглядеть примерно так: ( ссылка редактора vega ):

{
  "data": {"url": "data/seattle-weather.csv", "format": {"type": "csv"}},
  "encoding": {
    "x": {"timeUnit": "yearmonthdate", "field": "date", "type": "temporal"},
    "tooltip": [
      {"timeUnit": "yearmonthdate", "field": "date", "type": "temporal"},
      {"field": "temp_max", "type": "quantitative"},
      {"field": "temp_min", "type": "quantitative"}
    ]
  },
  "layer": [
    {
      "transform": [
        {"fold": ["temp_min", "temp_max"], "as": ["measure", "temp"]}
      ],
      "mark": {"type": "line"},
      "encoding": {
        "y": {"field": "temp", "type": "quantitative"},
        "color": {"field": "measure", "type": "nominal"}
      }
    },
    {
      "mark": "rule",
      "selection": {
        "hover": {"type": "single", "on": "mouseover", "empty": "none"}
      },
      "encoding": {
        "color": {
          "condition": {"selection": {"not": "hover"}, "value": "transparent"}
        }
      }
    }
  ],
  "config": {"axisY": {"minExtent": 30}}
}

enter image description here

Обратите внимание, что мы заменили два слоя temp_min / temp_max на один слой, который преобразует данные и кодирует цвет по имени столбца, автоматически генерируя легенду.

...