Система размеров в спецификациях визуализаций строится вокруг двух
базовых параметров — width и height,
определяющих область отрисовки графика. Эти параметры задают не
физические пиксели устройства, а логические размеры визуального
представления, которые затем интерпретируются движком рендеринга с
учётом масштабирования, контейнера и настроек адаптивности.
Поля width и height задают внутренний
размер канваса визуализации, исключая внешние отступы
(padding) и элементы оформления вокруг графика.
{
"width": 400,
"height": 200
}
Такое определение фиксирует область построения графических примитивов: осей, маркеров, линий и заливок.
В контексте Vega-Lite эти параметры чаще рассматриваются как часть декларативного описания, а в Vega — как элементы более низкоуровневого описания сцены.
В Vega-Lite размеры трактуются как высокоуровневые декларации, которые могут быть переопределены системой автоматической компоновки. Vega предоставляет более прямой контроль над геометрией сцены.
В Vega-Lite width и height могут
быть:
"container" для адаптивной ширины"step" для дискретных шкал (например,
категориальные оси)В Vega:
Фиксированное значение задаёт строгую геометрию визуализации:
{
"width": 600,
"height": 300
}
Такая конфигурация полезна для статичных дашбордов, экспортируемых изображений и печатных представлений.
Фиксированная модель предполагает, что все внутренние элементы (оси, подписи, легенды) подстраиваются под выделенное пространство без изменения общего размера сцены.
В Vega-Lite широко используется режим:
{
"width": "container"
}
Он означает, что ширина графика наследуется от родительского HTML-элемента. При изменении размеров окна или блока визуализация пересчитывается и перерисовывается.
Поведение включает:
Высота при этом может оставаться фиксированной или также быть адаптивной.
Специальное значение "step" применяется в основном для
дискретных шкал:
{
"width": { "step": 20 }
}
Каждый шаг соответствует ширине одного элемента (например, столбца диаграммы). Общая ширина вычисляется как:
Такая модель характерна для bar chart и dot plot.
Размеры напрямую определяют систему координат визуализации. Внутреннее пространство определяется как прямоугольник:
При этом в Vega используется явная сцена, где координаты могут быть вычислены через выражения, а в Vega-Lite — через декларативные преобразования.
Параметры width и height не включают
padding:
{
"width": 400,
"height": 300,
"padding": 20
}
Итоговая область рендеринга увеличивается за счёт внутренних отступов, которые применяются к:
Таким образом, фактический размер HTML-элемента становится больше заданного канваса.
Механизм autosize управляет тем, как ширина и высота
взаимодействуют с внешним контейнером.
Основные режимы:
pad — добавление padding для предотвращения обрезки
элементовfit — масштабирование содержимого под размеры
контейнераnone — фиксированная область без перерасчётаresize — динамическое изменение размеров при изменении
контейнераПример:
{
"width": "container",
"height": 400,
"autosize": "fit"
}
Режим fit перераспределяет всю визуальную композицию,
изменяя масштаб шкал и геометрии.
Размеры сцены тесно связаны с масштабами (scales):
В Vega-Lite это происходит автоматически через трансляцию данных в шкалы:
"scale": {
"domain": [0, 100],
"range": [0, 400]
}
Здесь range фактически привязан к width.
При недостаточных значениях width и height возникают типовые проблемы:
В Vega-Lite это частично компенсируется автоматическим поворотом подписей и уменьшением плотности тиков.
В Vega размеры могут быть выражены через сигналы:
{
"width": {"signal": "containerSize"},
"height": 300
}
Сигналы позволяют:
Это обеспечивает более низкоуровневый контроль по сравнению с Vega-Lite.
Хотя width и height задаются независимо, их соотношение определяет визуальную интерпретацию данных:
При изменении одного параметра без корректировки другого искажается восприятие наклона и плотности данных.
Размеры сцены влияют не только на геометрию графиков, но и на:
В Vega-Lite это регулируется автоматически, в Vega требует явного описания.
При использовании width: "container" поведение зависит
от CSS-окружения:
В результате один и тот же JSON-спек может давать разные визуальные результаты при изменении верстки.
В некоторых сценариях вводятся ограничения:
Это особенно важно для мобильных интерфейсов, где width часто ограничен экраном устройства.
Legend и title могут влиять на эффективное использование width и height:
Таким образом, фактическая область визуализации зависит не только от width и height, но и от структуры компонентов сцены.
Система размеров в Vega и Vega-Lite представляет собой комбинацию:
Эта модель обеспечивает разделение между логическим описанием данных и физическим представлением на экране, позволяя строить как статические, так и полностью адаптивные визуализации.