Ось и текстовые подписи в Vega-Lite опираются на систему
декларативной конфигурации, в которой параметры визуального
представления определяют поведение меток без ручного управления DOM.
Среди ключевых свойств форматирования осевых подписей выделяются
labelAngle и labelAlign, отвечающие за поворот
текста и его выравнивание относительно оси.
Параметр labelAngle задаёт угол поворота подписей оси в
градусах. Значение применяется ко всем текстовым элементам шкалы и
влияет на читаемость при высокой плотности данных или ограниченном
пространстве.
В Vega-Lite угол задаётся числом:
{
"axis": {
"labelAngle": 45
}
}
0 — горизонтальное расположение текста (по
умолчанию)-45 — наклон против часовой стрелки45 — наклон по часовой стрелке90 — вертикальное отображениеПоворот применяется после вычисления позиции метки на оси. Это означает, что геометрия размещения и трансформация текста разделены: сначала вычисляется layout, затем применяется rotation transform.
При большом количестве категорий:
labelOverlap)Параметр labelAlign определяет горизонтальное
выравнивание текста относительно его опорной точки после применения
поворота.
Допустимые значения:
"left""center""right"Пример конфигурации:
{
"axis": {
"labelAngle": 45,
"labelAlign": "left"
}
}
Выравнивание влияет на то, как текст «растёт» от точки привязки:
left — текст уходит вправо от опорной точкиright — текст уходит влевоcenter — симметричное расположение относительно
точкиПосле поворота текста система координат выравнивания остаётся локальной относительно rotated bounding box, а не исходной оси.
Комбинация labelAngle и labelAlign критична
для читаемости диаграмм с наклонёнными подписями.
При увеличении угла:
left и right становятся
визуально более выраженнымиcenter используется как нейтральное значение для
симметричного наклона{
"axis": {
"labelAngle": -40,
"labelAlign": "right",
"labelOverlap": "greedy"
}
}
Такой набор снижает перекрытие при длинных категориях и обеспечивает единообразное направление текста.
labelAngle чаще используется для наклона категорийlabelAlign компенсирует визуальный «уход» текста
внизlabelAlign влияет на расстояние от шкалы до текста
сильнее, чем сам поворотlabelAlign часто работает совместно с
labelBaseline, который управляет вертикальным
выравниванием:
topmiddlebottomКомбинация:
{
"axis": {
"labelAngle": 90,
"labelAlign": "center",
"labelBaseline": "middle"
}
}
даёт строго центрированное вертикальное расположение текста.
При использовании labelAngle система часто переключается
на стратегии обработки пересечений:
false — отображение всех меток"greedy" — выборочный показ"parity" — чередованиеПоворот текста уменьшает необходимость агрессивного скрытия меток, поскольку изменяет их bounding box.
{
"axis": {
"labelAngle": -30,
"labelAlign": "right"
}
}
Используется для равномерного распределения длинных строк без обрезки.
{
"axis": {
"labelAngle": 0,
"labelAlign": "center",
"labelLimit": 80
}
}
Подходит для коротких категорий и числовых шкал.
{
"axis": {
"labelAngle": 90,
"labelAlign": "left"
}
}
Применяется при ограниченной ширине визуализации.
В Vega-Lite параметры оси транслируются в Vega-spec, где текстовые трансформации выполняются на уровне text marks. Это означает:
labelAngle становится свойством angle у
текстового примитиваlabelAlign преобразуется в align
относительно rotated coordinate systemПри этом порядок трансформаций фиксирован:
{
"axis": {
"labelAngle": 45,
"labelAlign": "center"
}
}
В плотных диаграммах центрированное выравнивание при диагональном тексте может приводить к визуальному пересечению соседних меток.
Применение labelAngle к непрерывным шкалам часто не даёт
выигрыша, так как числовые значения обычно компактны и равномерно
распределены.
При длинных строках угол без корректного labelAlign
приводит к смещению визуального центра тяжести подписи, что ухудшает
читаемость даже при отсутствии пересечений.
В responsive-визуализациях Vega-Lite labelAngle остаётся
фиксированным, поэтому при изменении размеров контейнера:
labelAlign может играть более заметную роль в
визуальной стабилизацииКомбинации параметров часто подбираются под минимальную ширину отображения, а не под максимальную.