Есть ли способ использовать номер / идентификатор сюжета в выражении vega в сюжете повтора vega? - PullRequest
1 голос
/ 24 мая 2019

Я хотел бы использовать vega-lite, чтобы создать небольшую таблицу коэффициентов, которая показывает прогрессию по ряду состояний.Каждый отдельный график содержит один и тот же набор географических точек, которые я хочу раскрасить в соответствии с третьей переменной, в зависимости от того, какой график находится в серии.

Можно ли, используя vega-lite, раскрасить точки в соответствии с правилом, основанным на положении определенного кратного числа в серии?

Например, в кратном 1 я хочу закрасить все точки со значением == 1 красным, а остальные - серым;в кратном 2 я хочу закрасить все точки со значением == 2 красным, а остальные - серым;и т. д.

До сих пор я пытался настроить диаграмму repeat в vega (facet не годится, потому что мне нужны все данные на каждом графике), а затем использовать условие для кодирования цвета:

"color": {
        "condition": {
          "test": "datum.rdb == ???",
          "value": "#ff0000"
        },
     "value":"#aaaaaa" // grey if condition not met

Но я не знаю, что должно быть ???, чтобы получить номер или идентификатор каждого графика в пределах кратного.

1 Ответ

0 голосов
/ 24 мая 2019

Самый простой способ сделать это, вероятно, через граненый слой диаграммы.Идея состоит в том, что вы вычерчиваете весь набор данных на каждой панели серым цветом на заднем плане, а на него накладываете копию того же набора данных, ограненного цветом.

Вот пример использования набора данных cars (ссылка редактора vega ):

{
  "data": {"url": "data/cars.json"},
  "facet": {"type": "nominal", "field": "Origin"},
  "columns": 3,
  "spec": {
    "encoding": {
      "x": {"type": "quantitative", "field": "Horsepower"},
      "y": {"type": "quantitative", "field": "Miles_per_Gallon"}
    },
    "layer": [
      {
        "data": {"url": "data/cars.json"},
        "mark": {"type": "point", "color": "lightgray"}
      },
      {
        "mark": "point",
        "encoding": {"color": {"type": "nominal", "field": "Origin"}}
      }
    ]
  }
}

chart output

Обратите внимание, что данные указаны в двух местах: фоновый слой задает полный набор данных,в то время как слой переднего плана наследует граненый набор данных из верхнего уровня.

...