强制绘画顺序,在非堆积面积图中
Force order of painting, in non-stacked area chart
在使用 Vega Lite 时,我无法为绘制非堆叠区域强制执行相同的顺序。
例如,看看这里发生了什么:
在上面的行图中,我希望浅蓝色总是在深蓝色之后。然而,对于第 3、4 和 6 行,情况并非如此。
我已经尝试了几种顺序、排序和 zrank 的组合 — 但都没有成功。关于如何强制执行此操作的任何想法?
查看示例 full viz in the editor — 我无法让印度、以色列或日本在浅蓝色之上显示深蓝色区域。
我认为目前没有办法从图表规范中控制面积图的 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 年的条目之前),则每个面板中的堆栈顺序应该相同。
在使用 Vega Lite 时,我无法为绘制非堆叠区域强制执行相同的顺序。
例如,看看这里发生了什么:
在上面的行图中,我希望浅蓝色总是在深蓝色之后。然而,对于第 3、4 和 6 行,情况并非如此。
我已经尝试了几种顺序、排序和 zrank 的组合 — 但都没有成功。关于如何强制执行此操作的任何想法?
查看示例 full viz in the editor — 我无法让印度、以色列或日本在浅蓝色之上显示深蓝色区域。
我认为目前没有办法从图表规范中控制面积图的 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 年的条目之前),则每个面板中的堆栈顺序应该相同。