Graph Neo4j图形可视化库

Graph Neo4j图形可视化库,graph,neo4j,visualization,libraries,cypher,Graph,Neo4j,Visualization,Libraries,Cypher,最近,我探索了一些可以从Neo4j可视化图形的库,但没有清晰的视图可供选择,所以我有一些想法想与大家分享 我的要求和愿望-在搜索RESTAPI和cypher查询后,可视化所有关系、节点的图形。和结果使交互-能够拖放。。。单击可显示其他节点/关系的机会。通过json数据导入节点,并能够快速显示至少400个元素 因此,我或多或少地探索了更多的库: Three.js-主要用于3D。(如果我不需要3D,最好不要选择这个) Arbor.js-绘图由您决定,主要是布局库 VivaGraphJS-易于使用,但

最近,我探索了一些可以从Neo4j可视化图形的库,但没有清晰的视图可供选择,所以我有一些想法想与大家分享

我的要求和愿望-在搜索RESTAPI和cypher查询后,可视化所有关系、节点的图形。和结果使交互-能够拖放。。。单击可显示其他节点/关系的机会。通过json数据导入节点,并能够快速显示至少400个元素

因此,我或多或少地探索了更多的库:

Three.js-主要用于3D。(如果我不需要3D,最好不要选择这个)

Arbor.js-绘图由您决定,主要是布局库

VivaGraphJS-易于使用,但几乎没有文档:(

D3.js-看起来不错,但使用SVG

Cytoscape.js-看起来不错,但我读到我不能将其用于Neo4j。为什么

Processing.js—拥有自己的类似Java的语言。我还不太熟悉Java语言

我有几个问题:

1) 你的经验是什么——图书馆的优点和缺点

2) 我想我想用canvas代替SVG?(屏幕上有很多小元素)

3) Arbor是专门用于布局的库,但其他库没有布局算法或什么

我将感谢您的任何意见!:-)

我没有看到你可能想看的列表,因为它非常有用()

您必须以某种方式处理所接收数据的呈现(即,从数据结构到其视觉表示),这取决于您试图通过该可视化显示/说什么、您希望如何执行以及您希望它看起来如何


作为起点,我将使用D3和西格玛。

我考虑过类似的情况。我选择了sigma.js

1) 你的经验是什么——图书馆的优点和缺点

sigma.js特定于图形渲染。d3是一个完整的可视化工具箱。因为我只想绘制图形,简洁的sigma.js界面更容易使用。我认为这就是创建者谈论sigma.js如何能够进行增量渲染,从而更好地执行并平滑处理更多顶点/边的地方

2) 我想我想用canvas代替SVG?(很多小的 屏幕上的元素)

sigma.js渲染到画布


这是你的电话号码。“隐藏节点”示例显示了鼠标交互。此外,这里还展示了如何使用node.js中编写的极少量数据处理代码轻松集成neo4j w/sigma。将其移植到任何服务器语言都很容易。

我注意到Gephi不在您的列表中。作为一个独立的可视化工具/编辑器,这是我使用过的最好的工具(您只需获得neo4j插件,它将导入数据库的源文件并让您查看)。它也是开源的,因此您可以将其作为项目的一部分。

列表中还缺少图形可视化库系列

if的JavaScript变体同时使用Canvas、WebGL和SVG。这可以同时提供非常好的性能和高质量的可视化效果。对于毛球状图形(数千个点和线,但可能没有文本),您可以使用WebGL和Canvas,当您放大以实际理解数据时,您可以使用SVG获得详细的高质量可视化,包括标签、图标、数据绑定可视化等。您可以在同一可视化中使用这两种技术,即使在同一时间,也能从两个世界中获益()

这很容易

将视图中的400个元素作为目标是一个好主意。虽然较大的图形看起来非常漂亮,但大多数时候,通过查看“发球”,您不会获得很多见解。这些几乎是艺术化的视觉效果看起来都非常相似,因此几乎没有信息。通常情况下,您也可以显示一个静态图像,显示针对“发球图”查询的第一个google图像搜索结果:-)

为了在浏览过程中更好地支持用户,应该在查看器应用程序中添加过滤、分组、嵌套和动态交互。如何实现这一点,在很大程度上取决于可视化中的业务领域,尽管只有很少的通用方法适用于通用图


免责声明:我为创建上述可视化库的公司工作。不过,我不会在SO上发表意见。

9月5日有一个关于图形可视化的网络研讨会:[不确定这是否符合SO规则,如果不符合,请删除此评论]您没有指定不预先使用SVG的要求。为什么会这样。就我而言,对于大型图形渲染,画布是更好的选择。我试过Gephi,但它在边缘或节点上有一个限制(可能两者都有,不记得了):(最后是D3.js:)