带填充编码的标签条形图不考虑排序

时间:2019-06-14 18:36:08

标签: vega-lite

我正在尝试制作带有标签和fill编码的排序条形图。但是,当我添加填充编码时,它破坏了排序。通过github问题,似乎有解决此问题的方法,但我似乎可以找到解决方法。

在不使用填充编码的情况下给出规范,则排序按预期进行。

{
  "$schema": "https://vega.github.io/schema/vega-lite/v3.json",
  "data": {
    "values": [
      {
        "a": "A",
        "b": 28,
        "color": "black"
      },
      {
        "a": "B",
        "b": 55,
        "color": "grey"
      },
      {
        "a": "C",
        "b": 43,
        "color": "red"
      }
    ]
  },
  "encoding": {
    "y": {
      "field": "a",
      "type": "ordinal",
      "sort": {
        "encoding": "x",
        "order": "descending"
      }
    },
    "x": {
      "field": "b",
      "type": "quantitative"
    }
  },
  "layer": [
    {
      "mark": "bar"
    },
    {
      "mark": {
        "type": "text",
        "align": "left",
        "baseline": "middle",
        "dx": 3
      },
      "encoding": {
        "text": {
          "field": "b",
          "type": "quantitative"
        }
      }
    }
  ]
}

sorted baar

将填充编码添加到顶级编码对象时,它会通过以下警告中断排序

"fill": {
  "field": "color",
  "type": "ordinal",
  "scale": null
}
[Warning] Domains that should be unioned has conflicting sort properties. Sort will be set to true.

filled bar

Full vega-editor here

有没有解决的办法。

似乎与这些问题有关(也许)#2536#5408

1 个答案:

答案 0 :(得分:2)

是的,根本的问题是https://github.com/vega/vega-lite/issues/5048。在这种特殊情况下,向一次图层添加颜色会将堆栈转换添加到数据流的一部分,但不能添加到另一部分,因此我们无法合并它。这是一个很好的测试案例。您可以将此示例添加到新的github问题中,以便我们尝试解决它吗?

您可以通过禁用x编码堆栈来手动修复此示例。

"stack": null

请参见this spec

enter image description here