gephi+echarts实现可视化的网络关系图

gephi+echarts实现可视化的网络关系图

最近工作中需要展示客户合作关系图。感觉是一个比较有意思的事情,就花了些时间研究了一下。

原始数据:是一个xlsx文件,保存着客户的合作关系,每一行记录表示一次合作,合作的人员用分号分割。如下图的“作者”列。

目标:是生成与“Zhong Lin Wang”直接合作或间接合作的作者的关系图。

gephi+echarts实现可视化的网络关系图
实施过程
(1)第一步,首先将作者处理成“图”的“节点”和“边”。结果如下图。
gephi+echarts实现可视化的网络关系图
在这里,我使用的是java和mysql数据库,用java将作者列解析出来导入mysql数据库,使用mysql数据库的表连接,可以生成合作关系。然后从数据库中导出xlsx就行。具体代码就不赘述了。这一步比较简单,不同的人可能有不同的做法。我们的目标是生成“图”的“节点”和“边”,以便后续导入gephi生成可视化图。
(2)第二步,使用bfs算法,生成“Zhong Lin Wang”的直接关系节点和间接关系节点。同样还是以“图”的“节点”和“边”形式导出(与第一步格式一样)。

bfs算法比较简单,在此就不赘述了。

(3)第三步,将excel文件导入到gephi生成可视化的关系图。
首先需要格式化一下excel文件,生成下图格式的结果。
gephi+echarts实现可视化的网络关系图
其中:

source表示“边”的开始“节点”。
target表示“边”的目标“节点”。
type表示有向图还是无向图。
label是可视化图中“节点”对应的名称。

然后打开gephi导入数据并生成可视化关系图。结果如下图。
gephi+echarts实现可视化的网络关系图

通过区域1刻意调整节点的大小,我使用的是按照节点的度来确定节点的大小(通过ranking标签设置)。
通过区域2可以选择可视化图形的布局形式。我选择的是force模式。
通过区域3可以设置是否展示之前导入的lebal标签,以及展示的文字的大小。
通过区域4可以设置字体的相关配置。
区域5是展示区域,可以通过鼠标中键的滚动来放大和缩小。

(4)第四步,其实到第三步,已经能够展示出可视化结果了。但是gephi毕竟是个工具,不太适合放到线上展示。想省懒截个静态图,奈何笔记本屏幕太小,无法清晰展示所有节点的信息。就想到使用百度的echarts图(地址是:https://echarts.baidu.com/examples/editor.html?c=graph-force)。

百度的产品还是比较好用的,里面的实例和文档都比较详细。就不赘述了哈。

将下图中的ajax地址换成你从gephi导出的gexf的地址就可以了。
gephi+echarts实现可视化的网络关系图
生成效果图如下:
gephi+echarts实现可视化的网络关系图
(5)最后,剩下的就是根据个人审美水平调整echarts配置了。本人程序员一枚,审美水平实在有限,期望有更美的展示,但是“臣妾做不到啊啊 啊 啊”。

附上我的线上的展示样例地址,请各位大神批评指正。http://114.251.8.243:8890/upload/hch/graph-force.html