Дуги: отступы, скругление, сортировка

В библиотеке Nivo (в частности в компонентах круговых и дуговых диаграмм) визуальное поведение дуг определяется набором параметров, которые влияют на расстояния между сегментами, форму их краёв и порядок отображения данных. Эти параметры критичны для читаемости диаграммы при работе с плотными наборами данных и при необходимости акцентирования отдельных значений.

Круговая диаграмма в Nivo строится как набор дуг, каждая из которых представляет долю от общего значения. Геометрически каждая дуга определяется углом начала и конца, радиусом и внутренним радиусом (для donut-режима). Поведение сегментов модифицируется через дополнительные свойства, влияющие на визуальные разрывы и форму границ.

Основные элементы модели:

  • внешний радиус (outerRadius)
  • внутренний радиус (innerRadius)
  • угол сегмента (startAngle / endAngle)
  • данные сегмента (value)

На уровне визуализации именно дополнительные параметры задают «характер» дуг: разреженность, мягкость границ и порядок следования.


Отступы между дугами: padAngle

Параметр padAngle определяет угловой зазор между соседними сегментами. Он задаётся в радианах и влияет на визуальное разделение данных без необходимости использования контуров.

<Pie
    data={data}
    margin={{ top: 40, right: 80, bottom: 80, left: 80 }}
    innerRadius={0.5}
    padAngle={0.7}
/>

Поведение padAngle

  • увеличивает расстояние между дугами за счёт уменьшения их углов
  • создаёт визуальные «разрывы» между сегментами
  • влияет на общую плотность диаграммы

При увеличении значения:

  • сегменты становятся более изолированными
  • уменьшается ощущение «сплошного круга»
  • возрастает читаемость при большом количестве категорий

При значении, близком к нулю:

  • дуги плотно прилегают друг к другу
  • диаграмма выглядит монолитной
  • повышается сложность визуального разделения мелких сегментов

Скругление дуг: cornerRadius

Параметр cornerRadius управляет скруглением внешних и внутренних углов дуг. Он влияет на восприятие формы сегментов, делая их более мягкими или строгими.

<Pie
    data={data}
    innerRadius={0.6}
    cornerRadius={4}
/>

Особенности поведения cornerRadius

  • применяется ко всем сегментам равномерно
  • визуально сглаживает стыки между радиальными и дуговыми границами
  • создаёт эффект «закруглённых плиток» внутри окружности

Влияние на визуальную структуру

При увеличении значения:

  • дуги приобретают выраженную мягкость
  • уменьшается визуальная резкость сегментов
  • диаграмма становится более «дизайнерской» и менее технической

При значении 0:

  • сохраняется строгая геометрия с острыми краями
  • сегменты выглядят максимально формально
  • повышается контраст между разделёнными областями

Сортировка сегментов: порядок отображения данных

Порядок дуг в диаграмме определяется либо исходным порядком данных, либо параметром сортировки. В Nivo для круговых диаграмм используется управление через sortByValue, которое влияет на позиционирование сегментов по величине.

<Pie
    data={data}
    sortByValue={true}
/>

Логика сортировки

Существует два базовых режима:

1. Порядок входных данных

  • сегменты располагаются в том порядке, в котором переданы
  • сохраняется логика внешнего источника данных
  • используется для семантического контроля расположения

2. Сортировка по значению

  • сегменты переупорядочиваются по возрастанию или убыванию значения
  • крупные сегменты могут быть сгруппированы
  • обеспечивается визуальная иерархия

Влияние сортировки на восприятие дуг

Сортировка напрямую влияет на читаемость и визуальную интерпретацию диаграммы.

При сортировке по значению:

  • крупные сегменты легче идентифицируются
  • структура диаграммы становится предсказуемой
  • уменьшается визуальный шум

При сохранении исходного порядка:

  • сохраняется логическая структура данных
  • возможна привязка к бизнес-смыслу порядка
  • визуальная интерпретация требует дополнительного анализа

Комбинирование padAngle, cornerRadius и сортировки

Наиболее важный эффект достигается при совместном использовании всех трёх параметров.

Высокая плотность данных

<Pie
    data={data}
    innerRadius={0.6}
    padAngle={1.2}
    cornerRadius={6}
    sortByValue={true}
/>

Характеристики:

  • значительные промежутки между сегментами
  • мягкие визуальные границы
  • упорядоченная структура по величине

Такой набор параметров используется при необходимости выделить отдельные категории в плотных наборах данных.


Формальная аналитическая диаграмма

<Pie
    data={data}
    innerRadius={0.4}
    padAngle={0}
    cornerRadius={0}
    sortByValue={false}
/>

Характеристики:

  • строгая геометрия
  • отсутствие декоративных элементов
  • сохранение исходного порядка данных

Подходит для аналитических представлений, где важна точная структура входного массива.


Взаимодействие параметров с внутренней геометрией дуг

Каждый из параметров влияет на итоговую геометрию сегмента через изменение его угловых границ.

  • padAngle уменьшает доступный угол сегмента
  • cornerRadius модифицирует форму границы без изменения угла
  • sortByValue изменяет позицию сегмента в окружности без изменения его геометрии

Таким образом:

  • padAngle работает на уровне разбиения окружности
  • cornerRadius работает на уровне формы
  • сортировка работает на уровне структуры данных

Поведение при малых и больших наборах данных

Малое количество сегментов

  • padAngle может быть увеличен без потери читаемости
  • cornerRadius усиливает визуальную выразительность
  • сортировка оказывает минимальное влияние на восприятие

Большое количество сегментов

  • padAngle требует аккуратной настройки для предотвращения «разрыва» диаграммы
  • cornerRadius может ухудшать читаемость при чрезмерных значениях
  • сортировка становится ключевым инструментом структурирования

Визуальные артефакты и ограничения

При экстремальных значениях параметров возможны следующие эффекты:

  • чрезмерный padAngle приводит к потере целостности круга
  • высокий cornerRadius может визуально перекрывать узкие сегменты
  • сортировка при близких значениях может создавать визуально нестабильные переходы

Баланс между параметрами определяет конечную читаемость и эстетическую стабильность диаграммы.