对相同 y 值标记点的所有值使用多选
Use multi selection along all values for same y-value marked points
我在 kibana 中有一个 vega-lite 可视化。配置如下:
encoding: {
x: {field: "time", timeUnit: "yearmonthdaydatehoursminutes", type: "temporal", axis : {title: null}}
y: {field: "user", type: "nominal", axis : {title: null}}
}
layer : [
{
"selection": {
"select": {"type": "multi"}
},
"mark": { "type" : "point", "cursor": "pointer"},
"encoding": {
"opacity" : {"condition" : {"selection": "select", "value": 1},
"value": 0.3}
}
]
这基本上是基于单击可视化中的点的 selects,如下所示:
要求:我想select点击任意一个点(不仅是图中那个点)所有落在同一个y轴上的值.这可以通过 vega-lite 实现吗?基本上需要一个 if
条件,y 值为 selected 点。
我查看了文档(虽然它令人难以忘怀)和其他一些示例来弄清楚,但没有帮助。任何帮助将不胜感激。
如果希望选择应用于具有相同y轴值的所有点,可以在选择规范内传递encodings=["y"]
:
"selection": {"select": {"type": "multi", "encodings": ["y"]}}
单击图表背景时,选择无法响应。但实现此目的的一个好技巧是创建一个透明背景元素来响应点击,并在您的选择中使用 "nearest": true
以允许点击图表表面上的任意位置。这是一个使用 Vega-Lite JSON (view live in Vega Editor) 的例子:
{
"encoding": {"y": {"type": "nominal", "field": "user", "title": null}},
"layer": [
{
"mark": {"type": "rule", "opacity": 0},
"selection": {
"select": {"type": "multi", "encodings": ["y"], "nearest": true}
}
},
{
"mark": {"type": "point", "cursor": "pointer"},
"encoding": {
"opacity": {
"condition": {"value": 1, "selection": "select"},
"value": 0.3
},
"x": {
"type": "temporal",
"field": "time",
"timeUnit": "yearmonthdatehoursminutes",
"title": null
}
}
}
],
"data": {
"values": [
{"time": "1970-01-31T00:00:00.000002019", "user": "B"},
{"time": "1970-02-28T00:00:00.000002019", "user": "B"},
{"time": "1970-03-31T00:00:00.000002019", "user": "C"},
{"time": "1970-04-30T00:00:00.000002019", "user": "E"},
{"time": "1970-05-31T00:00:00.000002019", "user": "E"},
{"time": "1970-06-30T00:00:00.000002019", "user": "F"},
{"time": "1970-07-31T00:00:00.000002019", "user": "F"},
{"time": "1970-08-31T00:00:00.000002019", "user": "A"},
{"time": "1970-09-30T00:00:00.000002019", "user": "F"},
{"time": "1970-10-31T00:00:00.000002019", "user": "A"},
{"time": "1970-11-30T00:00:00.000002019", "user": "E"},
{"time": "1970-12-31T00:00:00.000002019", "user": "A"},
{"time": "1971-01-31T00:00:00.000002019", "user": "D"},
{"time": "1971-02-28T00:00:00.000002019", "user": "C"},
{"time": "1971-03-31T00:00:00.000002019", "user": "C"},
{"time": "1971-04-30T00:00:00.000002019", "user": "A"},
{"time": "1971-05-31T00:00:00.000002019", "user": "D"},
{"time": "1971-06-30T00:00:00.000002019", "user": "E"},
{"time": "1971-07-31T00:00:00.000002019", "user": "D"},
{"time": "1971-08-31T00:00:00.000002019", "user": "A"},
{"time": "1971-09-30T00:00:00.000002019", "user": "A"},
{"time": "1971-10-31T00:00:00.000002019", "user": "D"},
{"time": "1971-11-30T00:00:00.000002019", "user": "B"},
{"time": "1971-12-31T00:00:00.000002019", "user": "E"},
{"time": "1972-01-31T00:00:00.000002019", "user": "F"},
{"time": "1972-02-29T00:00:00.000002019", "user": "A"},
{"time": "1972-03-31T00:00:00.000002019", "user": "B"},
{"time": "1972-04-30T00:00:00.000002019", "user": "D"},
{"time": "1972-05-31T00:00:00.000002019", "user": "F"},
{"time": "1972-06-30T00:00:00.000002019", "user": "B"},
{"time": "1972-07-31T00:00:00.000002019", "user": "F"},
{"time": "1972-08-31T00:00:00.000002019", "user": "A"}
]
}
}
我在 kibana 中有一个 vega-lite 可视化。配置如下:
encoding: {
x: {field: "time", timeUnit: "yearmonthdaydatehoursminutes", type: "temporal", axis : {title: null}}
y: {field: "user", type: "nominal", axis : {title: null}}
}
layer : [
{
"selection": {
"select": {"type": "multi"}
},
"mark": { "type" : "point", "cursor": "pointer"},
"encoding": {
"opacity" : {"condition" : {"selection": "select", "value": 1},
"value": 0.3}
}
]
这基本上是基于单击可视化中的点的 selects,如下所示:
要求:我想select点击任意一个点(不仅是图中那个点)所有落在同一个y轴上的值.这可以通过 vega-lite 实现吗?基本上需要一个 if
条件,y 值为 selected 点。
我查看了文档(虽然它令人难以忘怀)和其他一些示例来弄清楚,但没有帮助。任何帮助将不胜感激。
如果希望选择应用于具有相同y轴值的所有点,可以在选择规范内传递encodings=["y"]
:
"selection": {"select": {"type": "multi", "encodings": ["y"]}}
单击图表背景时,选择无法响应。但实现此目的的一个好技巧是创建一个透明背景元素来响应点击,并在您的选择中使用 "nearest": true
以允许点击图表表面上的任意位置。这是一个使用 Vega-Lite JSON (view live in Vega Editor) 的例子:
{
"encoding": {"y": {"type": "nominal", "field": "user", "title": null}},
"layer": [
{
"mark": {"type": "rule", "opacity": 0},
"selection": {
"select": {"type": "multi", "encodings": ["y"], "nearest": true}
}
},
{
"mark": {"type": "point", "cursor": "pointer"},
"encoding": {
"opacity": {
"condition": {"value": 1, "selection": "select"},
"value": 0.3
},
"x": {
"type": "temporal",
"field": "time",
"timeUnit": "yearmonthdatehoursminutes",
"title": null
}
}
}
],
"data": {
"values": [
{"time": "1970-01-31T00:00:00.000002019", "user": "B"},
{"time": "1970-02-28T00:00:00.000002019", "user": "B"},
{"time": "1970-03-31T00:00:00.000002019", "user": "C"},
{"time": "1970-04-30T00:00:00.000002019", "user": "E"},
{"time": "1970-05-31T00:00:00.000002019", "user": "E"},
{"time": "1970-06-30T00:00:00.000002019", "user": "F"},
{"time": "1970-07-31T00:00:00.000002019", "user": "F"},
{"time": "1970-08-31T00:00:00.000002019", "user": "A"},
{"time": "1970-09-30T00:00:00.000002019", "user": "F"},
{"time": "1970-10-31T00:00:00.000002019", "user": "A"},
{"time": "1970-11-30T00:00:00.000002019", "user": "E"},
{"time": "1970-12-31T00:00:00.000002019", "user": "A"},
{"time": "1971-01-31T00:00:00.000002019", "user": "D"},
{"time": "1971-02-28T00:00:00.000002019", "user": "C"},
{"time": "1971-03-31T00:00:00.000002019", "user": "C"},
{"time": "1971-04-30T00:00:00.000002019", "user": "A"},
{"time": "1971-05-31T00:00:00.000002019", "user": "D"},
{"time": "1971-06-30T00:00:00.000002019", "user": "E"},
{"time": "1971-07-31T00:00:00.000002019", "user": "D"},
{"time": "1971-08-31T00:00:00.000002019", "user": "A"},
{"time": "1971-09-30T00:00:00.000002019", "user": "A"},
{"time": "1971-10-31T00:00:00.000002019", "user": "D"},
{"time": "1971-11-30T00:00:00.000002019", "user": "B"},
{"time": "1971-12-31T00:00:00.000002019", "user": "E"},
{"time": "1972-01-31T00:00:00.000002019", "user": "F"},
{"time": "1972-02-29T00:00:00.000002019", "user": "A"},
{"time": "1972-03-31T00:00:00.000002019", "user": "B"},
{"time": "1972-04-30T00:00:00.000002019", "user": "D"},
{"time": "1972-05-31T00:00:00.000002019", "user": "F"},
{"time": "1972-06-30T00:00:00.000002019", "user": "B"},
{"time": "1972-07-31T00:00:00.000002019", "user": "F"},
{"time": "1972-08-31T00:00:00.000002019", "user": "A"}
]
}
}