20

我是 UW 的一名 CS 研究学生,我的团队正试图实时可视化放入 neo4j 图形数据库的特定网络流量。

我已经阅读了许多不同的工具,例如 gephi、cytoscape、rickshaw(基于 D3.js)、其他一些工具和 D3.js。

到目前为止,我们正在推进 D3.js,但希望获得社区的意见。由于 neo4j,我们不能使用 cytoscape,并且觉得 D3.js 在快速实时环境中处理半大数据时效果最好。

建议?

也许还有另一个问题,但也可以随意输入:实现neo4j的最佳方式?Java、Ruby、node.js?

谢谢!

4

4 回答 4

14

对于这类问题,没有灵丹妙药的解决方案,主要取决于您的想法、团队和您拥有的预算(金钱和时间)。

我不会推荐你 D3,除非你必须满足以下条件之一:

  • 您想创建一种全新的方式来可视化您的数据
  • 您的团队中有技术娴熟的人 - 可以是您 - 使用 D3
  • 您已经有其他 D3 小部件/即要集成

如果您没有遇到上述任何条目,我会将 D3 放在一边,并告诉您看一下:

  • SigmaJS,开源和免费的 Javascript 库。
  • KeyLines,商业 Javascript 工具包。
  • VivaGraphJS,开源和免费的 JS 库。

免责声明:我是 KeyLines 开发人员之一。

根据您拥有的数据大小,库的选择可能会发生变化:如果您计划在图表上不超过 3/400 个节点并且不需要特定的样式/动画,那么我认为 SigmaJS 非常好;如果您正在寻找更高级的样式或动画,我会推荐 KeyLines,因为它旨在处理这种情况(提供增量布局)并且它可以毫无问题地扩展到 2000 个节点 - 尽管我可能会建议在这种尺寸的一侧有一个过滤器。

我将 VivaGraph 命名为最后的手段:SigmaJS 也有一个 WebGL 渲染器,并提供更好的渲染恕我直言。
VivaGraphJS 将很快被ngraph取代,它将使用不可知论的方法进行渲染:你可以使用 PIXI、Fabric 或任何你想要的......

当您加载一次资产并一直重复使用它们时,使用 WebGL 渲染器是有意义的:如果您在实时场景中设置图表元素的样式,恕我直言,Canvas 没有优势。

于 2014-05-07T16:08:45.200 回答
9

My understanding: Gephi doesn't do well with real-time updates; it's usually used on static data.

One major consideration - what is the visualization you wish to present? Is it a directed graph? Cyclic? Weighted? Additional labels?

Some toolkits are 'fixed' in what they can display, but make it easy to present a graph. Others (like d3) are very extensible, so you could create just about anything.

For the purposes of the StackOverflow format, you might get better answers if you can pin down the limitations and needs of your system (actual data rate, thin/thick client, type of viz, etc)

于 2013-02-14T17:21:18.357 回答
9

查看 vivagraph,它使用 webgl 进行渲染,并且对于更大的网络也可以很好地缩放。他们有一些非常大的例子(FB,亚马逊)。

http://github.com/anvaka/VivaGraphJS

于 2013-02-20T08:04:45.737 回答
7

我认为 D3 很棒,但是,最近,在 FOSDEM 上有一个关于 Sigma.js 的演讲,解释说它可以更好地扩展更大的图。另请参阅http://thewhyaxis.info/hairball/

于 2013-02-14T16:43:47.350 回答