В экосистеме декларативной визуализации Vega и Vega-Lite тип
arc представляет собой базовый графический примитив для
построения круговых и радиальных диаграмм. Его основное назначение
связано с отображением данных в полярной системе координат, где величины
кодируются через углы и радиусы.
Arc-геометрия используется не только в классических pie/donut chart, но и в более сложных композициях: радиальных столбчатых диаграммах, кольцевых индикаторах, секторных шкалах, визуализациях потоков и агрегированных долей.
Arc-объект задаётся как сегмент кольца, ограниченный двумя радиальными линиями и двумя окружностями (внутренней и внешней).
Формально каждый arc определяется набором параметров:
Базовая параметризация:
[ x() = r (), y() = r ()]
где θ изменяется от startAngle до endAngle,
а r задаёт радиус.
В Vega mark arc описывает геометрию сектора напрямую
через поля данных или вычисленные трансформации. Типичная структура
mark:
{
"type": "arc",
"from": {"data": "table"},
"encode": {
"enter": {
"startAngle": {"field": "start"},
"endAngle": {"field": "end"},
"innerRadius": {"value": 40},
"outerRadius": {"value": 100},
"fill": {"field": "color"}
}
}
}
В этом случае данные должны содержать уже рассчитанные углы, что делает Vega максимально низкоуровневой системой: она отображает геометрию, не интерпретируя её семантически.
В отличие от Vega, Vega-Lite абстрагирует вычисление углов. Данные
агрегируются автоматически через theta-encoding.
Базовый пример круговой диаграммы:
{
"data": {"name": "table"},
"mark": "arc",
"encoding": {
"theta": {"field": "value", "type": "quantitative"},
"color": {"field": "category", "type": "nominal"}
}
}
Здесь:
theta определяет размер сектораПозволяют управлять формой диаграммы:
innerRadius = 0 → классическая pie chartinnerRadius > 0 → donut chart{
"mark": {
"type": "arc",
"innerRadius": 40,
"outerRadius": 80
}
}
Позволяют ограничивать сектор круга, превращая arc в дугу произвольного диапазона.
Пример полукруговой диаграммы:
{
"mark": {
"type": "arc",
"startAngle": 3.14,
"endAngle": 6.28
}
}
Использование частичных дуг часто встречается в:
Параметр задаёт расстояние между секторами.
{
"mark": {
"type": "arc",
"padAngle": 0.02
}
}
Функционально padAngle:
Скругляет края сегментов.
{
"mark": {
"type": "arc",
"cornerRadius": 6
}
}
Эффекты:
Arc в Vega и Vega-Lite тесно связан с полярной системой координат. Декартовы данные трансформируются следующим образом:
[ = ]
Каждый сегмент получает угол пропорционально своей доле.
Радиусная логика:
Arc используется не только для угловых сегментов, но и для радиальных столбцов.
Пример:
{
"mark": "arc",
"encoding": {
"theta": {"field": "value"},
"radius": {"field": "value"},
"color": {"field": "category"}
}
}
Здесь появляется дополнительное измерение:
theta — уголradius — длина дугиЭто позволяет строить:
При рендеринге Vega выполняет следующие шаги:
Геометрическая аппроксимация дуги осуществляется через разбиение на сегменты Bézier-кривых.
Arc тесно взаимодействует с scale-компонентами:
Пример:
"encoding": {
"theta": {
"field": "value",
"scale": {"type": "linear"}
},
"color": {
"field": "group",
"scale": {"scheme": "category10"}
}
}
Arc требует аккуратной обработки крайних случаев:
Типичная стратегия обработки:
Arc часто используется совместно с:
Пример наложения текста:
{
"mark": "text",
"encoding": {
"theta": {"field": "value"},
"radius": {"value": 60},
"text": {"field": "category"}
}
}
Arc поддерживает интерполяцию параметров:
Анимация основана на интерполяции путей SVG.
Производительность зависит от:
При большом числе сегментов предпочтительнее Canvas-рендеринг, так как SVG создаёт множество DOM-узлов.
Несмотря на универсальность, arc имеет структурные ограничения:
Arc выступает фундаментом для множества производных визуализаций:
В каждом случае arc остаётся неизменной геометрической основой, изменяются лишь правила распределения углов и радиусов.
Ключевая особенность Vega-Lite заключается в том, что arc определяется не как геометрия, а как функция отображения данных:
Такой подход отделяет описание данных от их визуального представления, делая arc универсальным элементом полярной визуализации.