Механизм авторазмера в Vega и Vega-Lite определяет, каким образом
область визуализации подстраивается под данные, компоненты графика и
заданные ограничения по ширине и высоте. В основе лежит конфигурация
autosize, которая управляет стратегией размещения
графического содержимого внутри контейнера.
Ключевая задача авторазмера — согласовать три элемента:
width, height)padding)Различные режимы авторазмера определяют, что именно считается фиксированным, а что может быть адаптировано.
fit в autosizeРежим fit используется для масштабирования и подгонки
содержимого визуализации под доступное пространство таким образом, чтобы
вся сцена целиком помещалась в заданные границы.
Основная идея режима:
область визуализации должна полностью уместиться в контейнер, не выходя за пределы width × height, с учётом внутренних отступов и дополнительных элементов оформления.
Конфигурация задаётся через:
{
"autosize": {
"type": "fit"
}
}
fitПри включённом fit Vega/Vega-Lite выполняет перерасчёт
масштаба координатных систем так, чтобы:
В отличие от фиксированных режимов, здесь размеры графика становятся ограничением верхнего уровня, а не абсолютной величиной.
fit на
геометрию графикаПри использовании fit система координат масштабируется
автоматически. Это означает:
Особенно заметно это при работе с:
fit и paddingОтступы играют ключевую роль в режиме fit.
{
"width": 400,
"height": 300,
"padding": 20,
"autosize": {
"type": "fit"
}
}
Алгоритм распределения пространства включает:
Важно, что padding в режиме fit не игнорируется, а
входит в расчёт конечного масштаба.
fit и
динамическое изменение размеровПри изменении размеров контейнера (например, при resize окна):
В Vega-Lite это особенно важно при:
fitНесмотря на универсальность, режим fit имеет ряд
особенностей:
fitExtentfitExtent используется для более точного контроля
области, в которую должно быть вписано содержимое визуализации. В
отличие от общего fit, который работает с контейнером
целиком, fitExtent задаёт явную геометрическую область,
внутри которой происходит подгонка.
Концептуально:
fitExtent ограничивает область построения не просто размерами view, а вычисленным или заданным прямоугольником, учитывающим компоновку элементов визуализации.
fitExtentПри применении fitExtent система учитывает:
И затем выполняет масштабирование так, чтобы:
fitExtent от
fit| Характеристика | fit | fitExtent |
|---|---|---|
| Область контроля | весь viewport | вычисленный bounding box |
| Учет layout-элементов | частичный | более строгий |
| Применение | общая адаптивность | точная компоновка |
| Уровень контроля | высокий | более низкоуровневый |
fitExtent в композицияхВ сложных визуализациях, где присутствуют:
fitExtent обеспечивает более предсказуемое распределение
пространства, так как учитывает не только размеры контейнера, но и
фактическую компоновку элементов.
При активном fitExtent:
Это делает поведение более стабильным в сложных layout-структурах,
где стандартный fit может давать непредсказуемые визуальные
смещения.
fitfitExtentpadnonefit-x и fit-yfit{
"width": 500,
"height": 300,
"autosize": {
"type": "fit"
}
}
fit с padding{
"width": 500,
"height": 300,
"padding": 30,
"autosize": {
"type": "fit"
}
}
fitExtent{
"width": 600,
"height": 400,
"autosize": {
"type": "fit",
"contains": "padding"
}
}
В Vega-спецификациях fitExtent может также задаваться
через внутренние параметры layout-а и вычисляемые области компоновки,
влияющие на итоговый bounding box визуализации.
При использовании layered-графиков или concatenation-композиций:
fit перераспределяет масштаб на уровне всей сценыfitExtent корректирует масштаб на уровне отдельных
областейВ таких случаях особенно важно учитывать, что каждая подкомпозиция может иметь собственные ограничения, влияющие на общий результат авторазмера.