最近我探索了一些我可以在Neo4j中可视化图形的图书馆,但没有一个人可以选择的清晰视图,所以我有一些想法我想分享。
我的要求和愿望 - 在通过REST API搜索cypher查询后,可视化包含所有关系,节点的图形。结果使交互 - 能够拖放...显示其他节点/依赖点击的机会。通过json数据导入节点,并能够快速显示至少400个元素。
所以我或多或少地探索了更多的库:
Three.js - 主要用于3D。 (如果我不需要3D,那么最好不要选择这个)
Arbor.js - 绘图留给你,主要是布局库
VivaGraphJS - 易于使用,但几乎没有文档:(
D3.js - 看起来很好,但使用SVG
Cytoscape.js - 看起来不错,但我读到我不能将它与Neo4j一起使用。 Is D3.js the right choice for real-time visualization of Neo4j Graph DB data为什么?
Processing.js - 拥有与Java类似的语言。我还没有那种类似Java的语言。
我有几个问题:
1)您的经历是什么 - 图书馆的好处和弱点?
2)我想我想使用SVG的画布? (屏幕上有很多小元素。)
3)Arbor是布局的特殊库,但是其他的没有布局算法或者什么?我会感激任何意见! : - )
答案 0 :(得分:5)
1)您的经历是什么 - 图书馆的好处和弱点?
sigma.js特定于图形渲染。 d3是一个完整的可视化工具箱。由于我只想绘制图形,因此简洁的sigma.js界面更易于使用。我认为这是the video,其中创建者讨论了sigma.js如何能够进行增量渲染,从而更好地执行并更顺畅地处理更多顶点/边缘。
2)我想我想使用SVG的画布? (很多小 屏幕上的元素。)
sigma.js渲染到画布。
以下是sigma.js examples。 “隐藏节点”示例显示鼠标交互。另外,这里有一个blog post,展示了如何使用node.js中编写的极少量的数据按摩代码轻松集成neo4j w / sigma。将它移植到任何服务器语言都很容易。
答案 1 :(得分:1)
我在该列表中看不到sigma.js您可能想要查看的内容,因为它非常有用(example)
您必须以某种方式处理接收数据的呈现(即从数据结构转到其可视化表示),这取决于您尝试使用该可视化显示/说明的内容,您希望如何执行此操作以及你想要它的样子。
作为一个起点,我会选择D3和Sigma。
答案 2 :(得分:0)
我注意到Gephi不在您的列表中。作为独立的可视化/编辑器,它是我使用过的最好的(你只需要获得neo4j插件,它将导入数据库的源文件并让你查看它)。它也是开源的,因此您可以将其作为项目的一部分包含在内。
答案 3 :(得分:0)
列表中还缺少yFiles图形可视化库系列。
if的JavaScript变体同时使用Canvas,WebGL和SVG。这可以同时提供非常好的性能和高质量的可视化。对于类似毛球的图形(数千个点和线,但可能没有文本),您可以使用WebGL和Canvas,当您放大以实际理解数据时,您可以使用SVG获得详细的高质量可视化标签,图标,数据绑定可视化等。您可以在同一个可视化中使用这两种技术,甚至可以同时使用两种技术(demo)。
Connecting yFiles to Neo4j很简单using the JavaScript Bolt driver。
在视图中瞄准400个元素是个好主意。虽然较大的图表看起来非常好看,但大多数时候你不会通过查看“毛球”来获得很多见解。这些几乎艺术化的可视化都看起来非常相似,因此几乎没有信息。通常你也可以显示静态图像,显示第一个谷歌图像搜索命中“毛球图”查询: - )
为了在探索期间更好地支持用户,应该向查看器应用程序添加过滤,分组,嵌套和动态交互。如何实现这一点在很大程度上取决于可视化中的业务领域,并且只有极少数通用方法适用于通用图。
免责声明:我为创建上述可视化库的公司工作。不过,我并不代表它。