具有基本节点/边缘过滤功能的交互式Graphviz查看器



我浏览了Graphviz资源页面,以及问题1和2,仍然找不到具体的答案。我的用例是浏览软件组件(例如可安装包)之间的依赖关系,它的一个特殊特点是,一些常见节点是许多边缘的目标。例如,几乎每个可执行程序包都依赖于libc。

基于这一特点,我希望拥有具有以下功能的查看器/库:

  1. 使用Graphviz"点"布局算法(不同库中的强制布局算法不能为所讨论的用例提供良好的布局质量)
  2. 以交互方式禁用/重新启用图中的某个节点(上面的libc示例)
  3. 以交互方式禁用/重新启用来自特定节点的所有边缘(例如,libpng依赖于libz,但这是显而易见的,可以禁用以避免视图混乱)
  4. 在某个节点重新根化图(显示只有从该节点可到达的节点的子图),并"放大"以完成图

理想情况下,这将是一个Javascript库,它将允许更复杂的操作功能轻松实现。重要的是,如上所述的基本查看行为是开箱即用的——同样,我找不到这样的解决方案,许多解决方案要么是静态查看器,要么是允许拖动节点的"自由形式编辑器",但没有足够高级和有用的行为。

最后,如果不存在这样的解决方案,则欢迎为实现这些功能的最佳框架提出建议。

Gephi,https://gephi.org/,它支持许多图形格式,当然包括Graphviz点。它可以过滤节点或边,并具有某种分析功能。

我发现JoséFonseca的xdot.py是一个非常酷的基于Python和Cairo的用于查看Graphviz文件的应用程序。它写得很好,UI也很好,人们可能会想,为什么它的交互支持有点随意,不允许开箱即用的更多扩展性。我目前正在https://github.com/pfalcon/xdot.py

更新:我将上述功能的概念验证实现提交为filtered-viewer.py。稍后可能会重命名。

最新更新