使用node.js在sigma.js中预先计算图的位置(使用ForceAtlas2)

Pre-calculating positions (using ForceAtlas2) of graph in sigma.js using node.js

本文关键字:js 使用 位置 ForceAtlas2 node sigma 计算      更新时间:2023-09-26

我目前正在实现一个使用AngularJS、sigma.js&用于可视化的d3.js。数据集将是安静的大数据集(除了图上的200万个节点。)。我正在将所有西格玛代码移植到服务器端,以尽可能减少浏览器的压力。我有它,这样它将为西格玛图服务器端生成节点和边的对象。

我现在的问题是试图让ForceAtlas2算法在node.js上工作。有可能在服务器端渲染图吗?或者至少让ForceAtlas2工作服务器端记录节点(x,y)的位置,这样它就不必在ForceAtlas 2客户端加载静态位置了?

sigma.js当前的ForceAtlas2还不能通过node.js/io.js在服务器端工作,因为它的许多代码都依赖于web工作者。也许可以填充web工作人员以使其在服务器端工作,但如果我没有记错的话,这还从未尝试过。

也就是说,我真的希望将其移植到服务器端,当我们将sigma.js移植到更新的打包系统(如commonjs)时,我可能很快就会这样做。

因此,就目前而言,我认为您的选择如下:

  • 等待我开发一个服务器端兼容的算法版本
  • 通过Gephi工具包使用Java版本
  • 请尝试web工作者填充程序
  • 在专用页面上运行算法客户端,并将布局数据返回到服务器(ew…)

你能在sigma.js的存储库上打开一个问题吗?这样我们就可以一起解决这个问题了?

这是针对这种情况的又一次演练。

如果用户希望多次查看图形的数据集。当用户第一次访问时,我们可以将x,y坐标写入[window.localStorage]。在用户停止ForceAtlas2或布局后几秒钟。

当该用户进一步访问时,只需从localStorage获取坐标,我们不需要再次执行ForceAtlas2。

您可以从获取x、y和节点坐标

sigmaInst.graph.nodes()

因此:

window.localStorage.setItem("cachedNodes", JSON.stringify(sigmaInst.graph.nodes()))