我查看了Graphviz 资源页面,以及问题1和2,但仍然找不到具体答案。我的用例是浏览软件组件(例如可安装包)之间的依赖关系,它的一个特殊特征是一些公共节点是许多边缘的目标。例如,几乎每个可执行包都依赖于 libc。
基于该特征,我希望查看器/库具有以下功能:
- 使用 Graphviz“点”布局算法(不同库中大量的强制布局算法不能为所讨论的用例提供良好的布局质量)。
- 以交互方式禁用/重新启用图中的某个节点(上面的 libc 示例)。
- 以交互方式禁用/重新启用来自特定节点的所有边缘(例如,libpng 依赖于 libz,但这很明显,并且可以禁用以不使视图混乱)。
- 在某个节点处重新根图(显示仅可从该节点到达的节点的子图),然后“缩小”以完成图。
理想情况下,这将是一个 Javascript 库,可以轻松实现更复杂的操作功能。重要的是,如上所述的基本查看行为开箱即用 - 同样,我找不到类似的东西,许多解决方案要么是静态查看器,要么是允许拖动节点的“自由形式编辑器”,但不是足够高级和有用的行为。
最后,如果不存在这样的解决方案,欢迎提出实现这些功能的最佳框架的建议。