有没有办法在 vega repeat plot 的 vega 表达式中使用 plot number/identifier ?

Is there a way to use plot number/identifier in a vega expression in vega repeat plot?

我想使用 vega-lite 制作一个小的倍数图表,显示一系列状态的进展。每个单独的图都包含我希望根据第三个变量着色的同一组地理点,具体取决于它在系列中的哪个图。

是否可以使用 vega-lite,根据基于序列中特定倍数位置的规则为点着色?

例如,在多个 1 中,我想将所有值为 == 1 的点着色为红色,其余为灰色;在多个 2 中,我想为所有具有值 == 2 红色和其余灰色的点着色;等等等等

到目前为止,我已经尝试在 vega 中设置一个 repeat 图表(facet 不好,因为我需要每个图中的所有数据)然后使用颜色条件编码:

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

但我不知道 ??? 应该是什么才能获得多个地块中每个地块的编号或标识符。

最简单的方法可能是通过多面层图表。这个想法是,您在背景中以灰色绘制每个面板中的整个数据集,并在该面板上按颜色分面绘制相同数据集的副本。

这是一个使用汽车数据集 (vega editor link) 的示例:

{
  "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"}}
      }
    ]
  }
}

注意数据在两个地方指定:背景层指定完整数据集,而前景层从顶层继承分面数据集。