前段时间,项目中需要实现模块关联关系的展现,这种关系上下游的归属方不确定,也就是箭头方向不确定,而且模块间的关系复杂,就需要一种比较灵活的算法来实现这种布局。
在最开始选择了d3 force 来实现这种布局,如果数据是呈现为树形结构,或者关系不复杂的时候,或者模块很多,但是关联关系不复杂的时候,这种展现方式还是很美的。但是如果关联关系复杂,就会显得很乱,因为模块与模块之间的线无法按最优的方式来显示。如果想看d3 force 的效果或者了解d3 force 的用法,请参考 http://blog.segmentfault.com/joanna123/1190000000578378 这篇文章。
经过组内同学的讨论与研究,后来选择了使用graphviz。graphviz 能够在如果模块是树形结构能够很好的展现成树形结构,如果不是树形结构,会把相同层级的模块在一行展示。这种布局远远优于d3 force 的布局。
展现的结果如图:
graphviz是贝尔实验室几个计算机牛人设计的一个开源 的图表(计算机科学中数据结构中的图)可视化项目,主要用C语言实现,主要实现了一些图布局算法。通过这些算法,可以将图中的节点在画布上比较均匀的分 布,缩短节点之间的边长,并且尽量的减少边的交叉。而且生成的图是svg标签,方面在此基础上添加各种交互。
官网地址:http://graphviz.org/
在项目中我们使用的是php graphviz,
下载地址:http://pear.php.net/package/Image_GraphViz/download
使用文档:http://pear.php.net/package/Image_GraphViz/download
第一个demo: http://pear.php.net/manual/en/package.images.image-graphviz.example.php
目前php graphviz的使用我只在linux 使用成功了,Graphviz.php文件中引用了 require_once 'System.php' 这个文件,在windows下没有安装成功,如果哪位高手运行成功了,可告诉我。
具体的使用步骤查看:http://blog.segmentfault.com/joanna123/1190000000605923
更多细节使用查看官网文档:http://www.graphviz.org/Documentation.php
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。