Я посмотрел через страницу ресурсов Graphviz и вопросы 1 и 2 и до сих пор не нашли конкретного ответа. Моя учетная запись - это зависимость между программными компонентами (например, устанавливаемыми пакетами), и одна особенность заключается в том, что некоторые общие узлы являются целями для многих ребер. Например, почти каждый исполняемый пакет зависит от libc.
Основываясь на этом признаке, я хотел бы иметь зритель/библиотеку со следующими возможностями:
- Использовать алгоритм компоновки "dot" в Graphviz (силовые макеты, которые изобилуют в разных библиотеках, не обеспечивают хорошего качества макета для обсуждаемого usecase).
- Интерактивно отключить/повторно включить некоторые node в графе (пример libc выше).
- Интерактивно отключить/снова включить все выделенные объекты из определенного node (например, libpng зависит от libz, но это очевидно и может быть отключено, чтобы не создавать помехи).
- Корневой граф на некотором node (покажите подграф с только узлами, доступными из этого node), и "zoom back" для завершения графика.
В идеале это была бы библиотека Javascript, которая позволила бы легко реализовать более сложные возможности манипуляции. Что важно, что описанные выше основные способы просмотра, как описано выше, были доступны из коробки - опять же, я не мог найти что-то подобное, при этом многие решения были либо статическими зрителями, либо "редакторами свободной формы", позволяющими перемещать узлы вокруг, но не с чем-то с достаточно высокоуровневое и полезное поведение.
Наконец, если такого решения не существует, предложения по наилучшей структуре для реализации этих функций приветствуются.