В спецификациях Vega и Vega-Lite поле view определяет
параметры области визуализации как единого контейнера, внутри которого
размещаются графические элементы. Это один из базовых механизмов
управления геометрией и компоновкой, влияющий на размеры, отступы, фон и
поведение масштабирования всей сцены рендеринга.
Поле view задаёт глобальные свойства области отрисовки
(viewport), включая:
В терминах Vega, view находится на уровне
верхнеуровневой спецификации и применяется ко всему сценическому графу
(scenegraph). В Vega-Lite часть параметров view
абстрагируется через более высокоуровневые настройки, но при компиляции
транслируется в Vega-спецификацию.
Ключевые параметры определения размеров:
{
"view": {
"width": 600,
"height": 400
}
}
width — ширина области визуализации в пикселях;height — высота области визуализации в пикселях.Эти значения задают базовую систему координат сцены до применения
масштабов (scale) и трансформаций (transform).
При отсутствии значений используются значения по умолчанию, зависящие от
среды исполнения.
В Vega-Lite аналогичные параметры задаются на верхнем уровне спецификации:
{
"width": 600,
"height": 400
}
Поле padding определяет пространство между границами
view и областью отрисовки графических элементов.
{
"view": {
"padding": 20
}
}
Возможные формы задания:
{
"view": {
"padding": {
"left": 40,
"right": 20,
"top": 10,
"bottom": 30
}
}
}
Отступы влияют на размещение осей, подписей и легенд, так как эти элементы часто располагаются в пределах вычисленного padding-облака.
Параметр background задаёт цвет или стиль фона всего
view-контейнера.
{
"view": {
"background": "#f5f5f5"
}
}
Допускаются:
#hex, rgb,
rgba);"transparent");Фон применяется до отрисовки сцены и не участвует в системе координат.
Поле stroke и сопутствующие свойства позволяют визуально
выделить границу области:
{
"view": {
"stroke": "black",
"strokeWidth": 1
}
}
Дополнительно могут использоваться:
strokeDash — пунктирная линия;strokeOpacity — прозрачность границы;cornerRadius (в некоторых реализациях) — скругление
углов контейнера.Эти параметры чаще применяются в отладочных или демонстрационных целях.
Одним из наиболее значимых элементов view является
autosize, определяющий, как содержимое сцены реагирует на
изменение размеров контейнера.
{
"view": {
"autosize": {
"type": "fit",
"contains": "padding"
}
}
}
Фиксированные размеры без адаптации:
{
"view": {
"autosize": "none"
}
}
Графика выходит за пределы контейнера при нехватке пространства.
Сохраняет заданные размеры и добавляет отступы при необходимости.
Масштабирует содержимое так, чтобы оно полностью помещалось в view.
{
"view": {
"autosize": {
"type": "fit"
}
}
}
Ограниченная адаптация по одной оси:
fit-x — подгонка по ширине;fit-y — подгонка по высоте.Параметр contains уточняет, как учитывать padding:
"content" — только графические элементы;"padding" — включая отступы.Поле view определяет начальную систему координат сцены.
После применения размеров:
Все дальнейшие преобразования (scale, translate, rotate) применяются относительно этой системы.
view влияет не только на геометрию, но и на алгоритмы
размещения элементов:
В Vega-Lite многие из этих решений принимаются автоматически, но
итоговая спецификация всё равно опирается на view уровня
Vega.
Разные рендереры интерпретируют view по-разному:
В интерактивных сценариях view может изменяться во время
выполнения:
Пример логики обновления:
{
"view": {
"width": 800,
"height": 500,
"autosize": {
"type": "fit",
"resize": true
}
}
}
width/height и autosize
приоритет часто имеет autosize;view может быть
переопределена системой компиляции.Внутренне область вычисляется как последовательность преобразований:
width и height;padding;autosize;Эта последовательность определяет итоговое расположение всех
визуальных элементов внутри контейнера view.