我试图想象存储在数据库中的一个非常庞大的网络(3M节点和13M边缘)。对于实时交互性,我计划仅根据用户查询显示图形的一部分,并根据需要进行扩展。例如,当用户点击某个节点时,我会扩展其邻域。 (这称为"搜索,显示上下文,按需扩展"在this paper上)。
我查看了几个可视化工具,包括Gephi,D3等。他们将文本文件作为输入,但我不知道他们如何连接数据库并根据用户更新图表'相互作用。
链接的论文实现了这样的系统,但他们没有描述他们正在使用的工具。
如何使用上述标准可视化此类数据?
答案 0 :(得分:33)
有几种解决方案,但基本上每种方法都采用相同的方法:
正如miro marchi指出的那样,有几种解决方案可以实现这一目标,其中一些解决方案可以锁定特定的数据源,而另一些则具有更大的自由度,但需要一些编码技能。
我首先要选择源类型:从数据类型来看,我可能会选择Neo4J,Titan或OrientDB(如果你喜欢某种具有某种灵活性的异域风情)。 它们都提供了JSON REST API,前者使用专有系统和语言(Cypher),另外两个使用Blueprint / Rexster系统。 如果你喜欢Gremlin而不是Cypher,Neo4J也支持Blueprint堆栈。
对于其他解决方案,这样的其他NoSQL或SQL db可能你必须用相对的REST API编写上面的一层,但它也可以工作 - 我不建议你使用那种数据。< / p>
现在,只留下第三点,在这里你有几个选择。
Sigma.js这是一个免费的开源图形可视化工具。就我所知,Linkurious正在使用它的fork版本。
Keylines这是一个商业图形可视化工具,具有高级样式,分析和布局,如果您使用Neo4J or Titan,它们可以提供复制/粘贴演示。它不是免费的,但它确实支持更旧的浏览器 - IE7以后......
VivaGraph它是图形可视化工具的另一个免费开源工具 - 但与SigmaJS相比,它拥有更小的社区。 p>
D3.js这是数据可视化的事实,你基本上可以做到各种可视化,但学习曲线非常陡峭。
Gephi是另一个免费的开源桌面解决方案,您必须使用外部插件,但它确实支持大多数格式 - graphML,CSV,Neo4J等等......
Linkurious这是一个商业Neo4J专用搜索/调查数据的完整工具。
Neo4J web-admin控制台 - 即使它是基本的,他们使用基于D3.js的较新版本2.x.x
进行了大量改进。
还有其他解决方案,我可能忘了提及,但上面的解决方案应该提供了很多种。
由于JS的限制,上面的JS工具可以同时显示1500/2000个节点 如果你想要想象更大的东西 - 在扩展的同时 - 我会推荐像Gephi这样的桌面解决方案。
我是Keylines开发团队的成员。