这里的图数据特指布局后的图数据,主要包括顶点信息(ID和坐标等)以及边信息,先前已经写过如何使用Gephi
来进行数据的可视化,具体文章见:
Gexf
Gexf
是Gephi
的输入数据格式,其本质上是XML文件格式,标注了顶点信息和边信息。
如果我们想让自己的布局代码生成的数据直接拿到Gephi
中展示,那就还需要有一步将数据构造成上图的格式,说道使用Gephi
进行布局的可视化,虽然可以使用Gephi-Toolkit
进行,已经是比较轻量的嵌入到原有项目中,但还是耦合较高,需要多处硬编码联动,并且在二次利用时针对XML的解析往往是不够高效的。
JSON
JSON格式大家都十分耳熟能详了,针对上述的Gexf
的种种局限,使用前端可视化工具可以作为一个解决方案,布局程序只需生成指定格式的JSON
数据,然后由D3.js
进行解析绘制即可。
由上图可以看出,其整体结构比Gexf
要更简单,但是有部分坐标冗余,不过影响不大,使用JSON的好处是可以方便的对数据进行操作(无论是在前端还是后端)
D3.JS
关于D3
的详细叙述,请移步 这里,注意现在已经有 D3.V4 版本了(其实V5
也有了)。
Node的作用
这里为什么要用Node
,其实主要是为了起一个Server
,由上面的叙述可以知道,这里d3
需要读取json
文件,那么问题来了,直接静态打开是会报错的,必须放到一个Server
内以请求的方式进行才可以,这个Server
从何而来,当然可以是Tomcat
,但是,人总是要接受新事物,Node
的强大已经在各方面都慢慢体现出来了,服务容器当然也有他的身影,这里我只用了其中一种方式(http-server
),如果时间允许自己实现一个也是可以的。
http-server
除了可以快速起Server
外,还具有实时更新的功能,即,我只管往目录内写(更新)文件,然后用d3
进行绘制,更新的部分会自动更新到Server
,即重写覆写文件后我不需要重开Server
,只需要刷新一下页面即可。
<< 更多精彩尽在『程序萌部落』>>
<< https://www.cxmoe.com >>
http-server的使用方式
1 | hadoop@msi-PC MINGW64 ~/Desktop/CNPM |
完成后的目录如下所示,这里的整个目录就如同Tomcat
的Webapp
目录一样;
注意:这里的文件是可以动态增删改的
最后的检验
这里使用d3
直接尝试读取生成的csv
文件,目的是验证d3是否能够取到生成的数据文件。
1 |
|
打开浏览器输入localhost:8888/view.html
在Console
中会发现csv
内的数据已经被读取到。
注意,必须是以请求的方式进行读取,否则会发生如下错误(如果直接以静态资源的方式打开view.html
)
坐标轴绘制、图绘制
😒 留下您对该文章的评价 😄