Диаграмма дерева: иерархические данные и структурные связи

При представлении структурированных данных с четкими родительско-дочерними связями — например, организационных диаграмм, каталогов файловой системы, деревьев решений или классификаций таксономии —Диаграмма дерева обеспечивает интуитивную визуальную структуру. Располагая узлы данных вдоль ветвящихся путей, диаграммы дерева позволяют пользователям исследовать вложенные иерархии и отслеживать связи от центрального корневого узла через подветви.

Механика диаграмм дерева

В Apache ECharts диаграммы дерева используютtype: 'tree'. В отличие от стандартных диаграмм с явными осями X и Y, диаграммы дерева автоматически формируют позиции макета на основе вложенного объекта JavaScript, содержащегоname и необязательный массивchildren массив.

1. Основная настройка

Чтобы создать базовую диаграмму дерева, определите свою вложенную структуру данных и установитеtype: 'tree'внутри массива series:

option = {
    tooltip: {
        trigger: 'item',
        triggerOn: 'mousemove'
    },
    series: [
        {
            type: 'tree',
            data: [{
                name: 'Генеральный директор',
                children: [
                    {
                        name: 'Вице-президент по продукту',
                        children: [
                            { name: 'Менеджер продукта' },
                            { name: 'Дизайнер UX' }
                        ]
                    },
                    {
                        name: 'Вице-президент по инженерии',
                        children: [
                            { name: 'Технический лидер' },
                            { name: 'Инженер DevOps' }
                        ]
                    }
                ]
            }],
            top: '5%',
            left: '15%',
            bottom: '5%',
            right: '20%',
            symbolSize: 10,
            label: {
                position: 'left',
                verticalAlign: 'middle',
                align: 'right',
                fontSize: 12
            },
            leaves: {
                label: {
                    position: 'right',
                    verticalAlign: 'middle',
                    align: 'left'
                }
            },
            expandAndCollapse: true,
            animationDurationUpdate: 750
        }
    ]
};

 

Расширенные направления макета

Диаграммы дерева могут адаптироваться к различным ограничениям по пространству и требованиям к дизайну, меняя направление макета или переключаясь на радиальный вид.

1. Радиальный макет дерева

Установитеlayout: 'radial'чтобы направить ветви наружу от центральной точки, что идеально подходит для широких иерархий с большим количеством листовых узлов:

option = {
    tooltip: {
        trigger: 'item',
        triggerOn: 'mousemove'
    },
    series: [
        {
            type: 'tree',
            layout: 'radial',
            data: [{
                name: 'Корень',
                children: [
                    {
                        name: 'Ветвь A',
                        children: [
                            { name: 'A1' },
                            { name: 'A2' },
                            { name: 'A3' }
                        ]
                    },
                    {
                        name: 'Ветвь B',
                        children: [
                            { name: 'B1' },
                            { name: 'B2' }
                        ]
                    },
                    {
                        name: 'Ветвь C',
                        children: [
                            { name: 'C1' },
                            { name: 'C2' },
                            { name: 'C3' },
                            { name: 'C4' }
                        ]
                    }
                ]
            }],
            top: '18%',
            bottom: '14%',
            right: '18%',
            left: '18%',
            symbolSize: 12,
            initialTreeDepth: 2,
            animationDurationUpdate: 750
        }
    ]
};

 

Настройка макета и стилей

Настройка символов узлов, кривизны линий и форматирования на уровне помогает выделить ключевые структурные уровни на больших диаграммах.

1. Изогнутые соединители и стилизация узлов по уровням

Используйте lineStyle.curveness для сглаживания линий соединения, и определите уровни массив конфигураций для стилизации узлов в зависимости от их глубины в иерархии:

option = {
    tooltip: {
        trigger: 'item'
    },
    series: [
        {
            type: 'tree',
            orient: 'TB', // Ориентация сверху вниз
            data: [{
                name: 'Корень проекта',
                children: [
                    {
                        name: 'Фронтенд',
                        children: [
                            { name: 'React' },
                            { name: 'Vue' }
                        ]
                    },
                    {
                        name: 'Бэкенд',
                        children: [
                            { name: 'Node.js' },
                            { name: 'Python' }
                        ]
                    }
                ]
            }],
            top: '10%',
            left: '10%',
            bottom: '10%',
            right: '10%',
            symbol: 'emptyCircle',
            symbolSize: 14,
            edgeShape: 'polyline', // Использует четкие прямоугольные соединения вместо кривых
            initialTreeDepth: 2,
            lineStyle: {
                width: 2,
                color: '#ccc'
            },
            label: {
                position: 'top',
                fontSize: 12
            },
            leaves: {
                label: {
                    position: 'bottom'
                }
            }
        }
    ]
};

 

Стратегические лучшие практики

  • Управление начальной глубиной сворачивания: Установите initialTreeDepth (например, 1 или 2) на больших наборах данных, чтобы сохранить чистоту диаграммы при первоначальной загрузке, позволяя пользователям нажимать узлы для раскрытия деталей.
  • Выберите правильную ориентацию: Используйте горизонтальные (`LR`) или радиальные (`radial`) макеты для глубоко вложенных структур с длинными текстами меток, а вертикальные (`TB`) макеты — для мелких, широких организационных структур.
  • Различайте конечные узлы: Используйте свойство leaves для стилизации конечных узлов по-разному по сравнению с родительскими узлами-контейнерами, чтобы пользователи могли легко различать ветви и конечные точки.
Прокрутить вверх