在使用Vega Lite时,我无法强制以相同的顺序绘制非堆叠区域。
例如,看看这里会发生什么:
在上面的行中,我希望浅蓝色始终位于深蓝色之后。但是,对于第三,第四和第六行,情况并非如此。
我尝试了顺序,排序和zrank的几种组合-均未成功。关于如何强制执行此操作的任何想法?
请参见示例full viz in the editor-我无法让印度,以色列或日本在浅蓝色的顶部显示深蓝色区域。
答案 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
}
如果两种情况下都重新排列行以使颜色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
}
如果按年份对输入数据的行进行重新排序(因此所有2019年条目都在所有2020年条目之前),则每个面板中的堆栈顺序应该相同。