使用“搜索、展示上下文和按需扩展”的概念进行大数据可视化

32
我试图可视化一个存储在数据库中的非常庞大的网络(3M个节点和13M条边)。为了实现实时交互,我计划根据用户查询仅显示部分图形,并按需扩展它。例如,当用户点击一个节点时,我会扩展其邻域。(这被称为此论文中的“搜索、显示上下文、按需扩展”)。
我研究了几种可视化工具,包括GephiD3等。它们以文本文件作为输入,但我不知道它们如何连接数据库并根据用户交互更新图形。
所链接的论文实现了这样的系统,但他们没有描述他们使用的工具。
如何满足以上标准可视化这样的数据?

你看过我的项目www.twittercensus.se/graph2013吗? - Hampus Brynolf
@HampusBrynolf 谢谢,这确实是一个很好的可视化。它可以扩展到300万个节点吗? - Yang
“搜索,显示上下文,按需展开”在Linkurious软件(商业版)中得到了完全实现,详细内容请参考视频https://linkurio.us/。 - Seb
1个回答

34
有几种解决方案可供选择,但基本上每个解决方案都使用相同的方法:
  1. 在源代码之上创建一个层,以便您可以进行高级查询
  2. 创建一个前端层来与上面解释的层进行通信
  3. 使用所需的可视化工具
正如miro marchi所指出的那样,有几种解决方案可用于实现此目标,其中一些锁定到特定的数据源,而其他解决方案则更加灵活,但需要一些编程技能。

数据源

我将从选择源类型开始:根据数据类型,我可能会选择Neo4J、Titan或OrientDB(如果您想要某种更具灵活性和一定程度的奇特)。 它们都提供JSON REST API,前者使用专有系统和语言(Cypher),而另外两个使用Blueprint / Rexster系统。 如果您喜欢Gremlin而不是Cypher,则Neo4J也支持Blueprint堆栈。
对于其他解决方案,例如其他NoSQL或SQL数据库,您可能需要使用相关REST API编写一个层,但它也可以正常工作 - 尽管我不建议您为您拥有的数据类型这样做。
现在,只剩下第三点了,这里有几个选择。

通用可视化工具

  • Sigma.js是一个免费的开源工具,用于图形可视化,非常不错。据我所知,Linkurious在其产品中使用了其分支版本。

  • Keylines是一款商业图形可视化工具,具有先进的样式、分析和布局功能,并提供复制/粘贴演示,如果您正在使用Neo4J或Titan。它不是免费的,但它支持甚至旧版浏览器-IE7及以上版本...

  • VivaGraph是另一个免费的开源图形可视化工具,但与SigmaJS相比,它的社区规模较小。

  • D3.js是数据可视化的万能工具,基本上可以进行任何类型的可视化,但学习曲线相当陡峭。

  • Gephi是另一个免费的开源桌面解决方案,您可能需要使用外部插件,但它支持大多数格式-graphML、CSV、Neo4J等...

供应商特定

  • Linkurious 是一款商业化的 Neo4J 专用完整工具,用于搜索/调查数据。

  • Neo4J web-admin 控制台 - 即使它很基础,但在新版本 2.x.x 中有很大改进,基于 D3.js。

还有其他解决方案,可能我忘记了提到,但上述解决方案应该提供良好的选择。

其他节点

由于 JS 的限制,上述 JS 工具最多可以同时可视化 1500/2000 个节点。
如果您想扩大可视化范围并可视化更大的内容,我建议使用桌面解决方案,例如 Gephi。

免责声明

我是Keylines开发团队的一员。

在D3.js的情况下,有现成的示例可用于基于用户交互显示和隐藏邻域。我并不觉得学习D3.js很难。然而,这是一种奇怪的工具,因为使用它涉及处理HTML、SVG、Javascript和D3的不寻常的概念模型(一旦掌握就方便)。了解每个工具的一点知识就足以入门,并且印刷品和网络上有很好的介绍,以及许多代码示例。处理大量节点显然会引入额外的问题,这是MarcoCI所解决的。 - Mars

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接