对相同 y 值标记点的所有值使用多选

Use multi selection along all values for same y-value marked points

我在 kibana 中有一个 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}
  }
]

这基本上是基于单击可视化中的点的 selects,如下所示:

要求:我想select点击任意一个点(不仅是图中那个点)所有落在同一个y轴上的值.这可以通过 vega-lite 实现吗?基本上需要一个 if 条件,y 值为 selected 点。

我查看了文档(虽然它令人难以忘怀)和其他一些示例来弄清楚,但没有帮助。任何帮助将不胜感激。

如果希望选择应用于具有相同y轴值的所有点,可以在选择规范内传递encodings=["y"]

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

单击图表背景时,选择无法响应。但实现此目的的一个好技巧是创建一个透明背景元素来响应点击,并在您的选择中使用 "nearest": true 以允许点击图表表面上的任意位置。这是一个使用 Vega-Lite JSON (view live in 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"}
    ]
  }
}