最近在做一个图可视化的项目,项目中除了图的布局还涉及到对图数据的分析,例如社区检测、密集子图提取等等。因为项目的特殊性需要考虑在前端实现对图数据的分析,因此好奇有没有类似NetworkX[1]的JavaScript库。
结论是,我没能找到一个像NetworkX一样如此全面的对图数据进行分析的JavaScript库。但经过此次调研还是小有收获[2],下面介绍一下我调研发现的关系网络图的JavaScript库。
- JSNetworkX
A JavaScript port of the NetworkX graph library.
JSNetworkX正如名字所示是NetworkX的JavaScript版,受限于第三方依赖性(例如Numpy,作者只完成了一小部分的移植工作,基本图形类和SVG绘图是可用的。在下面这个链接中可以看到有哪些功能是已被成功移植的。
API porting progressfelix-kling.de虽然这个库与NetworkX可能最为接近,但项目的最后一次更新停留在了2015年,现在已经无人维护,所以使用有风险。
2. Ngraph
Ngraph is a set of graph related algorithms.
Ngraph有一系列与图相关的算法,可以在浏览器或服务器端使用。可以通过npm或者yarn来安装,最近一年内都有更新。ngraph的核心是ngraph.graph,该库仅表示图形数据结构。
基于这个库有一系列图分析算法,例如基础的最短路,最小生成树,社区检测算法(cw,louvain),并提供了图的一些度量的计算(centrality,pagerank,hits)。
除了图分析,Ngraph相关的库还涉及图的生成,提供the University of Florida sparse matrix collection的子集。也提供了一些图布局的算法,如力导向布局等等。
在npm上搜索可以看到更多相关的库,看起来ngraph是一个相对比较全面的关系网络图的JavaScript库,可以根据需求安装不同的模块进行使用。更多相关信息,将会在使用后