如何使用Graphviz输出Plone的庞大依赖关系图?
我写了一个工具,用来找出Python项目中的依赖关系。这个工具叫做Gluttony。我在Plone上运行它,结果非常不错。我用Networkx输出了一个图表,效果如下:
(来源: googlecode.com)
(哇!看起来像《粘粘世界》!)
这图看起来一团糟!我没有用Networkx处理布局,所以才会这样。这个工具可以输出Graphviz格式的文件。我尝试用dot命令来渲染这个图。我用的命令是这样的:
dot -Kdot -Tpng -oplone plone.dot
经过很长时间的运行,我得到了一个巨大的图像,但结果似乎不对。我在结果图像上什么也看不见,像一张白纸,什么都没有。到底出了什么问题?是图太大了无法渲染吗?我该怎么做才能渲染这样一个复杂的图呢?
我从其他小图中得到了正确的结果,比如这个:
(来源: googlecode.com)
甚至一个更大的图也能正确渲染,看看TurboGears2的图。
我觉得看到像Plone这样的大项目的依赖关系应该很有趣,而且对研究也很有帮助。可惜的是,我无法正确输出图表。有人能帮我吗?谢谢。
这是Plone的Graphviz格式文件: plone.dot
2 个回答
如果你能生成一张图片:Graphviz 通常会产生非常大的文件。你可以放大查看。
对我来说,graphviz 在处理你的文件时经常会崩溃。它似乎在每边最大只能处理 32 千像素,而你的文件可能更大,这样就会导致整数溢出。
试着把文件分成多个子图(如果能用图算法找到好的分割点,那就更好了)。
更新:
我写了一个简单的脚本来分割 dot 文件。虽然不完美,但效果还不错。
这个命令 dot plone.dot -Tsvg > plone.svg
会生成一个可缩放的矢量图形:
点击这里查看这个图形 http://dl.dropbox.com/u/138632/plone.svg
我可以在 Inkscape 软件中顺利打开 这个 .svg 文件,并且可以放大到100%。