d3js强制大量节点

时间:2014-03-11 07:06:19

标签: d3.js visualization bigdata

PL。帮我解决这个菜鸟问题。我想展示一个拥有大量(70000)节点的网络,以及210万个强制布局的链接。寻找一种好的,可扩展的方法来做到这一点。

  1. 我们如何实际显示如此大的节点,我们可以做某种近似并在语义上显示相同的网络(例如:http://www.visualcomplexity.com/vc/project.cfm?id=76
  2. 我们如何在后端实际减少此类数据[比如使用KDE?我们不能在前端使用science.js,因为音量很大]
  3. 初始视图可以是具有节点或群集的预定位置的网络。在将数据发送到d3js之前,我们如何预先确定后端的位置。我们必须使用topojson吗?
  4. 任何这样的例子都可以使用d3js(以及后端 - 比如java,python等)?

1 个答案:

答案 0 :(得分:1)

对这个问题感到抱歉,但你真的需要一次性显示所有这些信息吗?

如果你真的需要它,先看看Gephi,看看它是什么样的,然后转到下一步。

如果您发现可以在开始时关注特定节点或模式,然后探索图表的结果,从性能的角度来看,这可能是最佳解决方案。 如果发现方法有效,但您仍然遇到屏幕上有许多项目的问题,只需使用基于时间的阈值控制力布局。它并不完美,但它可以用于数百个节点。

下一步

如果你决定在这条路上走,我建议如下:

  • 聚合:这可能是您在这里可以做的最有用的事情:让用户与数据交互并挖掘数据以查看更多详细信息。如果您必须为许多客户提供服务,这是最好的解决方案。

  • 不要在整个网络的前端运行强制定向布局:在任何情况下,它都会占用所有浏览器资源至少几十分钟。

  • 计算后端的布局 - 例如在Java中使用JUNG或G​​ephi核心本身或在Python中使用NetworkX - 然后只显示结果。

  • 也可以缓存上面的结果:如果你有很多客户端,它们甚至对于服务器都很多,所以要缓存它。

  • 当用户拖动网络时,隐藏链接:它应该加快计算速度(sigmajs使用此技巧)