Лучший способ создать легенду из нескольких столбцов - использовать Fold Transform , чтобы сложить их в один столбец, а затем позволить кодировкам обрабатывать легенду за вас. Изменение примера, на который вы ссылаетесь, может выглядеть примерно так: ( ссылка редактора vega ):
{
"data": {"url": "data/seattle-weather.csv", "format": {"type": "csv"}},
"encoding": {
"x": {"timeUnit": "yearmonthdate", "field": "date", "type": "temporal"},
"tooltip": [
{"timeUnit": "yearmonthdate", "field": "date", "type": "temporal"},
{"field": "temp_max", "type": "quantitative"},
{"field": "temp_min", "type": "quantitative"}
]
},
"layer": [
{
"transform": [
{"fold": ["temp_min", "temp_max"], "as": ["measure", "temp"]}
],
"mark": {"type": "line"},
"encoding": {
"y": {"field": "temp", "type": "quantitative"},
"color": {"field": "measure", "type": "nominal"}
}
},
{
"mark": "rule",
"selection": {
"hover": {"type": "single", "on": "mouseover", "empty": "none"}
},
"encoding": {
"color": {
"condition": {"selection": {"not": "hover"}, "value": "transparent"}
}
}
}
],
"config": {"axisY": {"minExtent": 30}}
}
Обратите внимание, что мы заменили два слоя temp_min / temp_max на один слой, который преобразует данные и кодирует цвет по имени столбца, автоматически генерируя легенду.