Vega Lite在行和列之间独立缩放

时间:2019-10-28 06:40:45

标签: vega vega-lite

我有this chart,按照目前的状态,当您放大其中一个图表时,它也会同时放大所有其他图表。现在,对于所有数据具有相似/相关值的x轴,我都不介意。但是,对于即使比例在同一“系列”内也发生变化的y轴,放大到“变量”之一实质上会隐藏同一“系列”的其他“变量”。因此,我正在按自己的喜好寻找以下之一:

  1. 使用Vega Lite使y轴缩放在所有图表之间独立的方法。
  2. 使用Vega Lite在所有图表之间独立进行x和y轴缩放的方法。
  3. 使用Vega达到以上#1的方法。
  4. 使用Vega达到上述#2的方法。

1 个答案:

答案 0 :(得分:0)

对于串联图表,一种实现方法是将自定义绑定选择应用于每个图表,在要共享缩放行为的图表之间共享选择名称。一个简单的示例(vega editor):

{
  "data": {"url": "https://vega.github.io/vega-datasets/data/cars.json"},
  "hconcat": [
    {
      "mark": "point",
      "encoding": {
        "x": {"type": "quantitative", "field": "Horsepower"},
        "y": {"type": "quantitative", "field": "Acceleration"}
      },
      "selection": {
        "zoom_x": {"type": "interval", "bind": "scales", "encodings": ["x"]},
        "zoom_y1": {"type": "interval", "bind": "scales", "encodings": ["y"]}
      }
    },
    {
      "mark": "point",
      "encoding": {
        "x": {"type": "quantitative", "field": "Horsepower"},
        "y": {"type": "quantitative", "field": "Weight_in_lbs"}
      },
      "selection": {
        "zoom_x": {"type": "interval", "bind": "scales", "encodings": ["x"]},
        "zoom_y1": {"type": "interval", "bind": "scales", "encodings": ["y"]}
      }
    }
  ]
}

请注意,zoom_x选项在两个图表之间共享,而每个图表都有其自己的zoom_y版本。结果是图表之间共享x轴缩放,而y轴缩放是独立的。

类似的策略适用于您的情况2(为每个子图添加一个命名不同的边界选择)。

要在Vega中进行复制,您可以先在Vega编辑器中单击Vega-Lite图表的“ Compiled Vega”选项卡:它将向您展示如何在Vega中实现这些方法。