dagre — это открытая JavaScript-библиотека для автоматического расположения ориентированных ациклических графов (DAG) на плоскости. Библиотека разработана для вычисления координат узлов и трассировки ребер с целью получения читаемых диаграмм, часто используемых для визуализации схем, деревьев зависимостей и потоков данных. dagre реализует алгоритмы, ориентированные на минимизацию пересечений ребер, выравнивание уровней и аккуратное распределение узлов по слоям.
Проект возник как набор инструментов для веб-разработчиков, которым требуется автоматическое вычисление layout перед отрисовкой с помощью SVG или Canvas. dagre обычно применяется вместе с визуализационными библиотеками и фреймворками для рендеринга графов на клиенте. В источниках описывается реализация ключевых этапов многоступенчатого алгоритма раскладки: назначение уровней (rank), упорядочение узлов в рангах для уменьшения пересечений и вычисление окончательных координат с учётом размера узлов и отступов.
- Поддержка ориентированных ацикличных графов (DAG) и структур, близких к деревьям.
 - Многоступенчатый алгоритм раскладки: ранжирование узлов, упорядочивание для уменьшения пересечений, вычисление координат.
 - Возможность задавать размеры узлов и горизонтальные/вертикальные отступы для управления плотностью расположения.
 - Генерация информации о траекториях ребер, позволяющая затем отрисовать изогнутые или полилинейные соединения.
 - API для программного управления: добавление узлов и рёбер, запуск расчёта layout и чтение итоговых координат.
 - Интеграция с визуальными библиотеками: результаты layout легко использовать с SVG, Canvas и DOM для клиентской отрисовки.
 - Настраиваемые параметры алгоритма, позволяющие адаптировать поведение к требованиям читаемости и эстетики диаграмм.
 - Оптимизация для сред с ограниченными ресурсами — расчёт выполняется на клиентской стороне в JavaScript.