Существует несколько вариантов с различными плюсами и минусами - вы можете просмотреть этот , который представляет собой список программного обеспечения, которое более или менее соответствует тому, что вы ищете.
Раньше было сложно найти решение с открытым исходным кодом, но когда-то коммерчески лицензированный MSAGL сейчас кажется открытым исходным кодом .
Различие между Graph # и QuickGraph заключается в том, что последний предоставляет примитивы обхода и манипуляции с графом, но не предоставляет никаких алгоритмов компоновки. В Graph # есть весь доступный источник, и из того, что я (кратко) посмотрел, есть четкое разделение между механизмом компоновки и реализацией чертежа.
Graphviz написан на чистом C / C ++ и является достаточно монолитным, принимает в качестве входных данных текстовый файл, описывающий граф, и создает различные типы выходных данных, как векторные, так и растровые. Он не очень подходит для механизма компоновки плагинов, но его можно использовать, создавая оболочку и предоставляя необходимый входной файл и анализируя вывод. Хотя не очень чистое решение.
Также есть нечто, называемое OGDF . Хотя он полностью написан на C ++, он был разработан для использования в качестве библиотеки механизма компоновки и имеет хорошо структурированный интерфейс для этого. Он поддерживает различные алгоритмы компоновки, включая оптимизированный Sugiyama, если это то, что вас интересует.
Если вы заинтересованы в реализации оптимизированного варианта Sugiyama, вы всегда можете бросить свой собственный, используя аккуратное описание алгоритма :)
В конечном счете, вы, вероятно, должны решить, какой тип макета вам нужен, прежде чем принимать решение о библиотеке.