如何过滤具有多个条件的值?
How can I filter values with multiple conditions?
如何根据其他列筛选具有多个条件的值?在 中,答案显示了如何使用 filter transform
:
以单个条件进行过滤
{
"data": {
"values": [
{"a": "A", "b": 2, "c": "red"},
{"a": "A", "b": 7, "c": "yellow"},
{"a": "A", "b": 4, "c": "blue"},
{"a": "B", "b": 1, "c": "blue"},
{"a": "B", "b": 2, "c": "red"}
]
},
"transform": [{"filter": "datum.c == 'red'"}],
"mark": "bar",
"encoding": {
"x": {"field": "a", "type": "nominal"},
"y": {"aggregate": "average", "field": "b", "type": "quantitative"}
}
}
我想过滤 c 列中所有带有“红色”和“蓝色”的值,所以没有“黄色”。我相信需要使用 OneOf
逻辑运算符,如 vega documentation 所示,但我不知道如何使用。我将 transform
部分更改为:
"transform": [{"field": "c", "oneOf": ["red", "blue"]}],
但这在 online vega editor 中不起作用。
filter
转换可以用作字符串和对象。使用字符串类型时,您可以将条件设为:
"transform": [{"filter": "datum.c == 'red' || datum.c == 'blue'"}],
并且在使用对象时可以是:
"transform": [{"filter": {"field": "c", "oneOf": ["red", "blue"]}}],
根据复杂程度,您可以使用这两种类型中的任何一种。要回答您的问题,请参考以下代码或参考 editor:
{
"$schema": "https://vega.github.io/schema/vega-lite/v5.json",
"data": {
"values": [
{"a": "A", "b": 2, "c": "red"},
{"a": "A", "b": 7, "c": "yellow"},
{"a": "A", "b": 4, "c": "blue"},
{"a": "B", "b": 1, "c": "blue"},
{"a": "B", "b": 2, "c": "red"}
]
},
"transform": [{"filter": {"field": "c", "oneOf": ["red", "blue"]}}],
"mark": "bar",
"encoding": {
"x": {"field": "a", "type": "nominal"},
"y": {"aggregate": "average", "field": "b", "type": "quantitative"}
}
}
如何根据其他列筛选具有多个条件的值?在 filter transform
:
{
"data": {
"values": [
{"a": "A", "b": 2, "c": "red"},
{"a": "A", "b": 7, "c": "yellow"},
{"a": "A", "b": 4, "c": "blue"},
{"a": "B", "b": 1, "c": "blue"},
{"a": "B", "b": 2, "c": "red"}
]
},
"transform": [{"filter": "datum.c == 'red'"}],
"mark": "bar",
"encoding": {
"x": {"field": "a", "type": "nominal"},
"y": {"aggregate": "average", "field": "b", "type": "quantitative"}
}
}
我想过滤 c 列中所有带有“红色”和“蓝色”的值,所以没有“黄色”。我相信需要使用 OneOf
逻辑运算符,如 vega documentation 所示,但我不知道如何使用。我将 transform
部分更改为:
"transform": [{"field": "c", "oneOf": ["red", "blue"]}],
但这在 online vega editor 中不起作用。
filter
转换可以用作字符串和对象。使用字符串类型时,您可以将条件设为:
"transform": [{"filter": "datum.c == 'red' || datum.c == 'blue'"}],
并且在使用对象时可以是:
"transform": [{"filter": {"field": "c", "oneOf": ["red", "blue"]}}],
根据复杂程度,您可以使用这两种类型中的任何一种。要回答您的问题,请参考以下代码或参考 editor:
{
"$schema": "https://vega.github.io/schema/vega-lite/v5.json",
"data": {
"values": [
{"a": "A", "b": 2, "c": "red"},
{"a": "A", "b": 7, "c": "yellow"},
{"a": "A", "b": 4, "c": "blue"},
{"a": "B", "b": 1, "c": "blue"},
{"a": "B", "b": 2, "c": "red"}
]
},
"transform": [{"filter": {"field": "c", "oneOf": ["red", "blue"]}}],
"mark": "bar",
"encoding": {
"x": {"field": "a", "type": "nominal"},
"y": {"aggregate": "average", "field": "b", "type": "quantitative"}
}
}