我正在尝试制作带有标签和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"
}
}
}
]
}
将填充编码添加到顶级编码对象时,它会通过以下警告中断排序
"fill": {
"field": "color",
"type": "ordinal",
"scale": null
}
[Warning] Domains that should be unioned has conflicting sort properties. Sort will be set to true.
有没有解决的办法。
答案 0 :(得分:2)
是的,根本的问题是https://github.com/vega/vega-lite/issues/5048。在这种特殊情况下,向一次图层添加颜色会将堆栈转换添加到数据流的一部分,但不能添加到另一部分,因此我们无法合并它。这是一个很好的测试案例。您可以将此示例添加到新的github问题中,以便我们尝试解决它吗?
您可以通过禁用x编码堆栈来手动修复此示例。
"stack": null
请参见this spec。