如何使用Graphviz输出Plone的庞大依赖关系图?

6 投票
2 回答
3348 浏览
提问于 2025-04-15 19:31

我写了一个工具,用来找出Python项目中的依赖关系。这个工具叫做Gluttony。我在Plone上运行它,结果非常不错。我用Networkx输出了一个图表,效果如下:

Plone的依赖关系图,由Networkx输出
(来源: googlecode.com)

(哇!看起来像《粘粘世界》!)

这图看起来一团糟!我没有用Networkx处理布局,所以才会这样。这个工具可以输出Graphviz格式的文件。我尝试用dot命令来渲染这个图。我用的命令是这样的:

dot -Kdot -Tpng -oplone plone.dot

经过很长时间的运行,我得到了一个巨大的图像,但结果似乎不对。我在结果图像上什么也看不见,像一张白纸,什么都没有。到底出了什么问题?是图太大了无法渲染吗?我该怎么做才能渲染这样一个复杂的图呢?

我从其他小图中得到了正确的结果,比如这个: sprox的依赖关系图
(来源: googlecode.com)

甚至一个更大的图也能正确渲染,看看TurboGears2的图。

我觉得看到像Plone这样的大项目的依赖关系应该很有趣,而且对研究也很有帮助。可惜的是,我无法正确输出图表。有人能帮我吗?谢谢。

这是Plone的Graphviz格式文件: plone.dot

2 个回答

1

如果你能生成一张图片:Graphviz 通常会产生非常大的文件。你可以放大查看。

对我来说,graphviz 在处理你的文件时经常会崩溃。它似乎在每边最大只能处理 32 千像素,而你的文件可能更大,这样就会导致整数溢出。

试着把文件分成多个子图(如果能用图算法找到好的分割点,那就更好了)。

更新:

我写了一个简单的脚本来分割 dot 文件。虽然不完美,但效果还不错。

2

这个命令 dot plone.dot -Tsvg > plone.svg 会生成一个可缩放的矢量图形:

点击这里查看这个图形 http://dl.dropbox.com/u/138632/plone.svg

我可以在 Inkscape 软件中顺利打开 这个 .svg 文件,并且可以放大到100%。

撰写回答