23

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

基于该特征,我希望查看器/库具有以下功能:

  1. 使用 Graphviz“点”布局算法(不同库中大量的强制布局算法不能为所讨论的用例提供良好的布局质量)。
  2. 以交互方式禁用/重新启用图中的某个节点(上面的 libc 示例)。
  3. 以交互方式禁用/重新启用来自特定节点的所有边缘(例如,libpng 依赖于 libz,但这很明显,并且可以禁用以不使视图混乱)。
  4. 在某个节点处重新根图(显示仅可从该节点到达的节点的子图),然后“缩小”以完成图。

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

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

4

2 回答 2

17

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

于 2013-10-05T11:34:22.193 回答
7

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

更新:我将上述功能的概念验证提交为 filters-viewer.py 。以后可能会改名。

于 2013-02-14T19:41:03.853 回答