1

前段时间,项目中需要实现模块关联关系的展现,这种关系上下游的归属方不确定,也就是箭头方向不确定,而且模块间的关系复杂,就需要一种比较灵活的算法来实现这种布局。

在最开始选择了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


小渝人儿
1.1k 声望849 粉丝

前端工程师


« 上一篇
php graphviz
下一篇 »
Raphael 简介