Прежде всего, трудно описать, что я имею в виду под «данными на основе таблиц», потому что в некотором смысле все входные данные для Vega являются «табличными», но этот пример должен прояснить это:
Большинство (если не все) примеров Vega-Lite для многолинейных диаграмм используйте такие данные, как,
"data": {
"values": [
{"id": 0, "symbol": "A", "value": 4},
{"id": 1, "symbol": "A", "value": 2},
{"id": 0, "symbol": "B", "value": 3},
{"id": 1, "symbol": "B", "value": 8}
]
}
который просто раскрасить строки A
и B
с помощью такого кодирования,
"mark": "line",
"encoding": {
"x": {"field": "id", "type": "quantitative"},
"y": {"field": "value", "type": "quantitative"},
"color": {"field": "symbol", "type": "nominal"}
}
Но что, если я хочу получить тот же результат с такой табличной формой данных, как эта,
"data": {
"values": [
{"id": 0, "A": 4, "B": 3},
{"id": 1, "A": 2, "B": 8}
]
}
1. Как я могу кодировать данные на основе таблицы в одну цветную многолинейную диаграмму?
Базовая кодировка может создавать диаграммы линии для каждого поля и слой их друг на друга, как это,
"encoding": {
"x": {"field": "id", "type": "quantitative"}
},
"layer": [
{
"mark": "line",
"encoding": {
"y": {"field": "A", "type": "quantitative"}
}
},
{
"mark": "line",
"encoding": {
"y": {"field": "B", "type": "quantitative"}
}
}
]
Но при этом я не знаю, как по-другому раскрасить линии или как создать легенду.
2. Является ли этот тип входных данных идиоматическим по отношению к дизайну vega / vega-lite?