【发布时间】:2022-01-08 13:15:54
【问题描述】:
我想知道如何以更可控的方式绘制具有多个 Y 轴的单个图形。我当前的图表已经有 3 层,它们的值相同,所以应该保持在一个 Y 轴上。但是,现在我必须在顶部绘制一个完全不同比例的东西,并且我需要一个独立的 Y 轴,仅用于某些图层。有可能吗?
现在,如果我设置resolve: scale: Y: independent,所有层都试图争夺第二个 Y 轴,看起来,整个情节就消失了。
下面是一个可复制的最小示例,可以按原样复制粘贴到 https://vega.github.io/editor/#/ 。这里的目标是能够用肉眼分辨所有 3 条线的斜率;换句话说,让“X-Y”和“X2-Y2”线使用左边的Y轴一个刻度,让“X3-Y3”使用右边的Y轴一个不同的刻度。
请注意,我已经有 6 个不同标记类型的图层,并且会继续添加这些图层。然而,所有这些都将分为两个等级类别(例如,从 1 到 10 和从 10000 到 20000 的值)。我希望能够为每一层定义它属于哪个类别以及它使用哪个 Y 轴(左或右)。
{
"data": {
"values": [
{"x": 1, "y": 10},
{"x": 2, "y": 7},
{"x2": 1, "y2": 11},
{"x2": 2, "y2": 12},
{"x3": 1, "y3": 1000},
{"x3": 2, "y3": 2500}
]
},
"encoding": {"x": {"type": "quantitative"}, "y": {"type": "quantitative"}},
"layer": [
{
"mark": "line",
"encoding": {"x": {"field": "x"}, "y": {"field": "y"}}
},
{
"mark": {
"type": "square",
"size": 100
},
"encoding": {
"x": {"field": "x2"},
"y": {"field": "y2"},
"color": {"value": "red"}
}
},
{
"mark": "line",
"encoding": {
"x": {"field": "x3"},
"y": {"field": "y3"},
"color": {"value": "black"}
}
}
],
"mark": "line",
"config": {},
"resolve": {"scale": {"y": "independent"}}
}
【问题讨论】: