У вас есть две диаграммы с одной и той же легендой и две разные спецификации легенды (одна интерактивная, другая нет). Когда вы объединяете две диаграммы, Vega-Lite по умолчанию делит шкалы и условные обозначения, что означает, что он должен выбрать одну из спецификаций легенды для соблюдения и одну для игнорирования. Выбор, который делает библиотека, состоит в том, чтобы соблюдать первое и игнорировать второе. Вот почему легенда отражает все, что указано в самой левой диаграмме вашей спецификации.
Обходной способ - установить независимое разрешение цвета легенды, чтобы каждая диаграмма указывала собственную легенду и явно установите легенду на ноль, чтобы скрыть ее для диаграммы, для которой легенда не нужна. Изменение вашего второго примера ( открыть в редакторе ):
{
"$schema": "https://vega.github.io/schema/vega-lite/v4.json",
"data": {"url": "data/cars.json"},
"concat": [
{
"mark": "point",
"encoding": {
"x": {"field": "Horsepower", "type": "quantitative"},
"y": {"field": "Miles_per_Gallon", "type": "quantitative"},
"opacity": {"field": "Cylinders", "type": "nominal", "legend": null}
}
},
{
"mark": "point",
"selection": {
"myCyli": {"type": "multi", "fields": ["Cylinders"], "bind": "legend"}
},
"encoding": {
"x": {"field": "Horsepower", "type": "quantitative"},
"y": {"field": "Miles_per_Gallon", "type": "quantitative"},
"opacity": {
"condition": {
"selection": "myCyli",
"field": "Cylinders",
"type": "ordinal"
},
"value": 0
}
}
}
],
"resolve": {"legend": {"opacity": "independent"}}
}