绘画的强制顺序,在非堆叠区域图中

时间:2020-03-10 04:15:20

标签: vega-lite

在使用Vega Lite时,我无法强制以相同的顺序绘制非堆叠区域。

例如,看看这里会发生什么:

enter image description here

在上面的行中,我希望浅蓝色始终位于深蓝色之后。但是,对于第三,第四和第六行,情况并非如此。

我尝试了顺序,排序和zrank的几种组合-均未成功。关于如何强制执行此操作的任何想法?

请参见示例full viz in the editor-我无法让印度,以色列或日本在浅蓝色的顶部显示深蓝色区域。

1 个答案:

答案 0 :(得分:1)

我认为目前还没有一种方法可以控制图表规格中面积图的z顺序,但是您可以通过数据源的顺序来控制它:颜色按照它们出现的顺序堆叠。例如,在第0行中,颜色1首先出现,在第1行中,颜色0首先出现:

{
  "data": {
    "values": [
      {"x": 0, "y": 2, "row": 0, "color": 1},
      {"x": 1, "y": 1, "row": 0, "color": 1},
      {"x": 0, "y": 1, "row": 0, "color": 0},
      {"x": 1, "y": 2, "row": 0, "color": 0},
      {"x": 0, "y": 2, "row": 1, "color": 0},
      {"x": 1, "y": 1, "row": 1, "color": 0},
      {"x": 0, "y": 1, "row": 1, "color": 1},
      {"x": 1, "y": 2, "row": 1, "color": 1}
    ]
  },
  "mark": "area",
  "encoding": {
    "x": {"field": "x", "type": "temporal"},
    "y": {"field": "y", "type": "quantitative", "stack": false},
    "color": {"field": "color", "type": "ordinal"},
    "row": {"field": "row", "type": "ordinal"}
  },
  "height": 50
}

enter image description here

如果两种情况下都重新排列行以使颜色0出现在颜色1之前,则图表上的堆栈顺序将保持一致:

{
  "data": {
    "values": [
      {"x": 0, "y": 1, "row": 0, "color": 0},
      {"x": 1, "y": 2, "row": 0, "color": 0},
      {"x": 0, "y": 2, "row": 0, "color": 1},
      {"x": 1, "y": 1, "row": 0, "color": 1},
      {"x": 0, "y": 2, "row": 1, "color": 0},
      {"x": 1, "y": 1, "row": 1, "color": 0},
      {"x": 0, "y": 1, "row": 1, "color": 1},
      {"x": 1, "y": 2, "row": 1, "color": 1}
    ]
  },
  "mark": "area",
  "encoding": {
    "x": {"field": "x", "type": "temporal"},
    "y": {"field": "y", "type": "quantitative", "stack": false},
    "color": {"field": "color", "type": "ordinal"},
    "row": {"field": "row", "type": "ordinal"}
  },
  "height": 50
}

enter image description here

如果按年份对输入数据的行进行重新排序(因此所有2019年条目都在所有2020年条目之前),则每个面板中的堆栈顺序应该相同。

相关问题