Использовать множественный выбор по всем значениям для одинаковых отмеченных значений y - PullRequest
1 голос
/ 06 ноября 2019

У меня есть vega-lite визуализация в кибане. Конфигурация выглядит следующим образом:

encoding: {
    x: {field: "time", timeUnit: "yearmonthdaydatehoursminutes", type: "temporal", axis : {title: null}}
    y: {field: "user", type: "nominal", axis : {title: null}}
}

layer : [
  {  
  "selection": {
    "select": {"type": "multi"}
  },
  "mark": { "type" : "point", "cursor": "pointer"},
  "encoding": {
    "opacity" : {"condition" : {"selection": "select", "value": 1},
      "value": 0.3}
  }
]

Это в основном множественный выбор, основанный на щелчке точки в визуализации, как показано ниже:

Multi Select

Требование : Я хочу выбрать все значения, попадающие на одну и ту же ось Y, одним щелчком мыши в любой точке (не только в этой точке, как на рисунке). Это возможно через Vega-Lite? В основном нужно условие if со значением y для выбранной точки.

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

1 Ответ

1 голос
/ 06 ноября 2019

Если вы хотите, чтобы выбор применялся ко всем точкам с одинаковым значением оси Y, вы можете передать encodings=["y"] в пределах спецификации выбора:

"selection": {"select": {"type": "multi", "encodings": ["y"]}}

Невозможно, чтобы выбор реагировал, когдащелкнув фон графика. Но хороший прием для достижения этой цели - создать прозрачный фоновый элемент для реагирования на щелчки и использовать "nearest": true в вашем выделении, чтобы разрешить щелчок в любом месте на поверхности диаграммы. Вот пример использования Vega-Lite JSON ( просмотр в реальном времени в Vega Editor ):

{
  "encoding": {"y": {"type": "nominal", "field": "user", "title": null}},
  "layer": [
    {
      "mark": {"type": "rule", "opacity": 0},
      "selection": {
        "select": {"type": "multi", "encodings": ["y"], "nearest": true}
      }
    },
    {
      "mark": {"type": "point", "cursor": "pointer"},
      "encoding": {
        "opacity": {
          "condition": {"value": 1, "selection": "select"},
          "value": 0.3
        },
        "x": {
          "type": "temporal",
          "field": "time",
          "timeUnit": "yearmonthdatehoursminutes",
          "title": null
        }
      }
    }
  ],
  "data": {
    "values": [
      {"time": "1970-01-31T00:00:00.000002019", "user": "B"},
      {"time": "1970-02-28T00:00:00.000002019", "user": "B"},
      {"time": "1970-03-31T00:00:00.000002019", "user": "C"},
      {"time": "1970-04-30T00:00:00.000002019", "user": "E"},
      {"time": "1970-05-31T00:00:00.000002019", "user": "E"},
      {"time": "1970-06-30T00:00:00.000002019", "user": "F"},
      {"time": "1970-07-31T00:00:00.000002019", "user": "F"},
      {"time": "1970-08-31T00:00:00.000002019", "user": "A"},
      {"time": "1970-09-30T00:00:00.000002019", "user": "F"},
      {"time": "1970-10-31T00:00:00.000002019", "user": "A"},
      {"time": "1970-11-30T00:00:00.000002019", "user": "E"},
      {"time": "1970-12-31T00:00:00.000002019", "user": "A"},
      {"time": "1971-01-31T00:00:00.000002019", "user": "D"},
      {"time": "1971-02-28T00:00:00.000002019", "user": "C"},
      {"time": "1971-03-31T00:00:00.000002019", "user": "C"},
      {"time": "1971-04-30T00:00:00.000002019", "user": "A"},
      {"time": "1971-05-31T00:00:00.000002019", "user": "D"},
      {"time": "1971-06-30T00:00:00.000002019", "user": "E"},
      {"time": "1971-07-31T00:00:00.000002019", "user": "D"},
      {"time": "1971-08-31T00:00:00.000002019", "user": "A"},
      {"time": "1971-09-30T00:00:00.000002019", "user": "A"},
      {"time": "1971-10-31T00:00:00.000002019", "user": "D"},
      {"time": "1971-11-30T00:00:00.000002019", "user": "B"},
      {"time": "1971-12-31T00:00:00.000002019", "user": "E"},
      {"time": "1972-01-31T00:00:00.000002019", "user": "F"},
      {"time": "1972-02-29T00:00:00.000002019", "user": "A"},
      {"time": "1972-03-31T00:00:00.000002019", "user": "B"},
      {"time": "1972-04-30T00:00:00.000002019", "user": "D"},
      {"time": "1972-05-31T00:00:00.000002019", "user": "F"},
      {"time": "1972-06-30T00:00:00.000002019", "user": "B"},
      {"time": "1972-07-31T00:00:00.000002019", "user": "F"},
      {"time": "1972-08-31T00:00:00.000002019", "user": "A"}
    ]
  }
}

enter image description here

...