自己动手写可视化软件(代码已开源)
一年多前,那时候我还在实习,正好上一个项目接近的尾声,紧随而来的就是一个大数据一体化的项目,包括了数据的采集、处理、计算、整合以及数据展示等。
而可视化这块,在前期就落在了我的头上,虽然这款开源的小工具最终没有作为大数据可视化的解决方案,但是这是一个自己完完整整,一步一个脚印写起来的,从中学到的东西自然不仅限于这款工具,还有查找资料的方法、解决问题的思路等等,总得来说都是一段不错的学习经历。
时隔一年多,我还是想着把代码开源出来:
- 一来是因为这是群友和一些网友的呼声;
- 二来是目前的工作与可视化方向也渐行渐远,放出代码算是对过去的一个总结或是告别;
- 最后也是希望通过把代码放出来,为别人提供一点思路,也为自己提供一个对外交流的窗口。
不管代码好坏,拥抱开源,这也是一种学习的态度。
之前在写这款工具的时候,有不时的在可视化系列里记录下了自己的心得或是遇到的问题以及取得的成果^^
《可视化工具solo show-----Processing Prefuse show》
《可视化工具solo show-----Prefuse自带例子GraphView讲解》
《漫谈可视化Prefuse(一)---从SQL Server数据库读取数据》
《漫谈可视化Prefuse(二)---一分钟学会Prefuse》
《漫谈可视化Prefuse(三)---Prefuse API数据结构阅读有感》
《漫谈可视化Prefuse(四)---被玩坏的Prefuse API》
《漫谈可视化Prefuse(五)---一款属于我自己的可视化工具》
这款小工具主要是基于Prefuse的工具库来写的,不同于gephi这样的既有对外暴露的API,又有集成的工具gephi软件,Prefuse提供了支持多种布局,支持不同的数据结构,能够实时交互,文本索引,通过sql与数据库连接等等功能丰富的接口。但是我们在Prefuse的官网上并没有看到一个完整的工具或者软件,这里的小工具是将这些支持的功能做一个整合并加入一些常用的需求,从而就形成了现在工具的样子。
代码托管在Github上
https://github.com/DMinerJackie/prefuse-visualization-tool
同时还有一些文档在resource目录下面
已经实现的功能举例
- 工具主要分为四大块,顶端的菜单栏,左侧的信息栏,中间的图形展示区,右侧的参数调整区(还没实现);
- 当中间的图像 去没有图形也就是没有导入数据时,菜单栏中的部分按钮为灰色不可用,只有导入数据才变为可用状态;
- 选择导入后,信息展示区就会显示出节点/边的个数和条数,以及图形的性质是有向还是无向等;
- 点击文件->打开,选中数据文件后会弹出图形配置信息,比如可以展示位有向/无向/混合图,可以选择要展示的节点标签,这些都是在数据文件中有配置;
- 支持多种布局算法,具体可参看前几篇展示效果;
- 对于节点上的标签可以选择显示或不显示,如果有加入图片信息,还可以显示图片(关于在节点上显示图片,可以参看项目中的例子);
- 可以改变节点的形状,如矩形,圆形等;
- 支持边直线曲线的显示(在工具中还没有实现,可以参看前几篇中的demo);
- 可以根据数据文件中配置边的权重展示不同粗细的边;
- 支持悬浮高亮和近邻高亮(这里鼠标悬浮在Alan节点上,其高亮为红色,而与Alan相邻的如Non也会橙色高亮显示);
- 支持适应屏幕显示,点击控制器->适应屏幕显示,就会将图形缩放到能够在图像展示区显示为止
操作展示
- Part 1:
- Part 2:
- Part 3:
注意事项
- 其中有些test有hard code,如果无法运行,请检查是否有hard code比如读取配置文件的路径
- 有些功能需要做实现准备,比如连接数据库的功能,需要你本机某个数据源比如sql server中或者mysql,并在其中按照要求兴建数据,在工具中配置好后才可以同步数据库中的数据并显示
- 有些功能模块截至目前还没有具体的实现,比如"Action配置"模块
- 载入图形时,有时候会有重影的现象,记得这是开发中期后才遇到的情况
- 工具中的右侧面板参数调整还没有实现
限于个人水平有限,有问题欢迎不吝赐教,或者在github上提出issue。
====================我是更新线=====================
根据Hongten的建议,这里找了一个皮肤jar,里面提供一些皮肤,试了下,都比原来的裸奔好看,挑几个:
如果您觉得阅读本文对您有帮助,请点一下“推荐”按钮,您的“推荐”将是我最大的写作动力!如果您想持续关注我的文章,请扫描二维码,关注JackieZheng的微信公众号,我会将我的文章推送给您,并和您一起分享我日常阅读过的优质文章。