Тип rect в Vega и Vega-Lite представляет собой базовый
графический примитив для отображения прямоугольников в декартовой
системе координат. Он используется для построения тепловых карт, матриц
значений, календарных визуализаций, агрегированных распределений и
других визуальных структур, где данные естественно раскладываются по
двум измерениям.
Ключевая особенность rect заключается в том, что каждый
элемент визуализации определяется четырьмя границами: x,
x2, y, y2. В Vega-Lite чаще
применяются упрощённые формы задания через x,
y и агрегированные или биннинговые каналы.
В Vega rect описывается через mark и явные координаты
границ:
{
"type": "rect",
"from": {"data": "table"},
"encode": {
"enter": {
"x": {"scale": "xscale", "field": "x"},
"x2": {"scale": "xscale", "field": "x2"},
"y": {"scale": "yscale", "field": "y"},
"y2": {"scale": "yscale", "field": "y2"},
"fill": {"value": "steelblue"}
}
}
}
Такой способ задаёт геометрию напрямую и даёт полный контроль над формой.
В Vega-Lite тип rect используется как high-level
абстракция, где координаты вычисляются автоматически через encoding.
{
"data": {
"values": [
{"x": 0, "y": 0, "v": 5},
{"x": 1, "y": 0, "v": 10},
{"x": 0, "y": 1, "v": 7},
{"x": 1, "y": 1, "v": 3}
]
},
"mark": "rect",
"encoding": {
"x": {"field": "x", "type": "ordinal"},
"y": {"field": "y", "type": "ordinal"},
"color": {"field": "v", "type": "quantitative"}
}
}
Здесь rect автоматически формируется как ячейка
сетки.
Каждый прямоугольник определяется как область в пространстве:
В Vega-Lite эти интервалы часто выводятся из:
bin: true)aggregate)rect особенно важен при построении гистограмм и
распределений.
{
"data": {"url": "data.json"},
"mark": "rect",
"encoding": {
"x": {
"bin": true,
"field": "value"
},
"y": {
"aggregate": "count"
},
"color": {
"aggregate": "count"
}
}
}
bin: true разбивает числовую ось на интервалыОдно из основных применений — heatmap.
{
"data": {"values": [
{"a": "X", "b": "X", "v": 1},
{"a": "X", "b": "Y", "v": 0.4},
{"a": "Y", "b": "X", "v": 0.4},
{"a": "Y", "b": "Y", "v": 1}
]},
"mark": "rect",
"encoding": {
"x": {"field": "a", "type": "nominal"},
"y": {"field": "b", "type": "nominal"},
"color": {"field": "v", "type": "quantitative"}
}
}
В Vega-Lite размеры прямоугольников контролируются косвенно:
scale.rangeStep для ordinal-осейpadding внутри шкалыВ Vega возможно явное управление:
"x2": {"value": 200}
fill — основной цветfillOpacity — прозрачность заливкиstroke — контурstrokeWidth — толщина линии"mark": {
"type": "rect",
"fill": "#4c78a8",
"stroke": "white",
"strokeWidth": 1,
"opacity": 0.8
}
rect относится к базовым mark-типам с плоской
геометрией. При рендеринге:
x2, y2bin, aggregate,
stackrect часто используется как фон или слой:
{
"mark": "rect",
"encoding": {
"x": {"value": 0},
"x2": {"value": 100},
"y": {"value": 0},
"y2": {"value": 50},
"color": {"value": "#f0f0f0"}
}
}
При изменении размеров графика:
rect относится к относительно дешёвым mark-типам:
rect является фундаментом:
Его универсальность основана на простоте геометрии и прямой связи с прямоугольной декомпозицией данных.