有没有一种方法可以在Vega重复图的Vega表达式中使用图号/标识符?

时间:2019-05-24 02:05:58

标签: vega vega-lite

我想使用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

但是我不知道???应该是什么,以便获取倍数内每个图的编号或标识符。

1 个答案:

答案 0 :(得分:0)

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

以下是使用汽车数据集(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"}}
      }
    ]
  }
}

chart output

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