Диаграммы Санки — это высокоэффективные инструменты визуализации, используемые для отображения направления потока количества между различными узлами в системе. Пропорционально изменяя физическую ширину соединяющих линий в зависимости от объема потока, они позволяют инженерам, аналитикам и командам по эксплуатации мгновенно выявлять основных участников, распределение ресурсов, неэффективность или утечки в сложных сетях, таких как энергетические сети, цепочки поставок и финансовые портфели.
Базовая структура синтаксиса
Определения макета Санки основаны на оптимизированном формате структуры CSV (значения, разделенные запятыми) с тремя столбцами. Каждый файл начинается с одной из следующих строк: “sankey или sankey-beta заголовка объявления типа, за которым следуют отдельные строки потока, строго соответствующие формату Источник,Назначение,Значение шаблону.
sankey
Исходный узел,Целевой узел,150.50
Целевой узел,Финальный выходной узел,90.25 
Справочник по синтаксису
В таблице ниже приведены основные правила и параметры данных, необходимые для правильного анализа диаграммы Санки в Mermaid.js.
| Элемент синтаксиса | Требование к типу | Описание и правила использования |
|---|---|---|
| Объявление | Идентификатор ключевого слова | Инициализирует движок отрисовки макета потока. Принимает “sankey или совместимую с предыдущими версиями “sankey-beta строку. |
| Исходный узел | Строчная метка | Исходная категория, с которой начинается поток ресурсов. Регистрозависимый идентификатор. |
| Целевой узел | Строка метки | Узел-получатель, где завершается конкретный объем связи. |
| Значение | Положительное число с плавающей точкой / целое число | Числовое значение потока. Толщина отображаемого пути напрямую рассчитывается относительно этого значения. |
| Строка комментария | Индикатор синтаксиса | Любой текст, предваряемый двойным знаком процента (“%%), игнорируется компилятором, что позволяет делать чистые аннотации данных. |
Обработка специализированных символов в метках узлов
Поскольку запятые и кавычки служат в качестве разделителей структурной системы внутри движка макета, специализированные вводы имен требуют определенных способов экранирования, чтобы обеспечить правильное отображение на холсте фронтенда.
1. Запятые в именах
Если конкретная метка узла требует буквальной запятой, оберните весь контейнер строки узла в пару стандартных двойных кавычек:
sankey
Бюджетный фонд,"Операции, заработная плата и администрирование",45000 
2. Кавычки в именах
Чтобы явно отобразить двойные кавычки внутри имени метки, оберните весь параметр в внешние кавычки и используйте удвоенную пару двойных кавычек (“"") внутри строки целевого значения:
sankey
Серверные кластеры,"Внутренний ""Край"" узел",850 
Расширенная конфигурация темы (директивы)
Вы можете точно настроить внешний вид диаграммы, передав блок конфигурации frontmatter в начале фрагмента документа. Это позволяет управлять стилями связей, отступами макета, стилями текста и выравниванием элементов непосредственно из редактора исходного текста.
Матрица атрибутов конфигурации Санки
| Имя свойства | Допустимые значения | Визуальный результат |
|---|---|---|
showValues |
true | false |
Переключает отображение текста числового значения потока непосредственно внутри полей меток узлов. |
linkColor |
'source' | 'target' | 'gradient' | '#hex' |
Определяет сопоставление цветов для путей связей.'gradient' плавно смешивает цвета между соединёнными объектами. |
nodeAlignment |
'justify' | 'left' | 'right' | 'center' |
Выравнивает структурные столбцы по сетке пространства холста. |
labelStyle |
'legacy' | 'обведенный' |
'обведенный' добавляет маску обводки фона за текстом, чтобы гарантировать высокую читаемость на сложных макетах. |
nodeWidth |
Целое число (пиксели) | Задает ширину прямоугольников узлов (по умолчанию: 10). |
nodePadding |
Целое число (пиксели) | Задает параметры вертикального расстояния между стекающимися строками (по умолчанию: 12). |
Реальный проект: Распределение чистой энергетической сети
Этот всесторонний проект отслеживает систему управления инфраструктурой энергетической сети. Он демонстрирует настройки заголовка — установку плавных градиентов цветов связей, стили обводки шрифтов и отключение подсчета метрик в строке — в сочетании со структурой многоуровневого макета.
---
config:
sankey:
showValues: false
linkColor: 'gradient'
nodeAlignment: 'justify'
labelStyle: 'outlined'
nodeWidth: 15
nodePadding: 18
---
sankey
%% Исходные строки данных
Солнечная ферма,Сетевая система хранения энергии,120.50
Ветряные турбины,Сетевая система хранения энергии,180.75
Гидроэлектростанция,Прямая промышленная линия,210.00
Импорт биотоплива,Тепловая резервная станция,45.25
%% Узлы распределения
Сетевая система хранения энергии,Жилые потребительские линии,145.00
Сетевая система хранения энергии,Прямая промышленная линия,110.25
Сетевая система хранения энергии,Потери и рассеивание энергии в системе,46.00
%% Финальные узлы доставки
Прямая промышленная линия,Тяжелый производственный хаб,295.00
Прямая промышленная линия,Коммерческие розничные сектора,25.25
Тепловая резервная станция,Коммерческие розничные сектора,45.25 
Распространённые синтаксические ошибки и системные ограничения
При компиляции сильно плотных массивов данных небольшие скрытые ошибки конфигурации могут вызвать сбои при обработке макета. Помните об этих правилах устранения неполадок:
- Точная проверка колонок: Каждая строка данных после объявления основного заголовка должна содержать ровно три параметра, разделённые запятыми. Добавление четвёртой колонки или отсутствие значения приведёт к полной остановке компиляции диаграммы.
- Разрешение пустых строк: В отличие от жёстких правил традиционного парсинга данных, Mermaid позволяет добавлять пустые, чистые строки внутри блока кода, чтобы логически разделить различные уровни или этапы обработки ваших данных модели.
- Циклические блоки: Структуры Санки разработаны строго на основе направленных ациклических графов (DAG). Если вы соединяете узел А с узлом Б, а затем пытаетесь создать строку пути, соединяющую узел Б обратно с узлом А, математика движка макета столкнётся с циклическим обратным связью и выдаст ошибку.
- Ограничения данных значений: Поля значений могут обрабатывать только положительные числа. Отрицательные значения или буквенные символы не могут быть отображены в параметрах ширины.