17

我正在使用d3.js生成由 50K 节点组成的图形的强制导向布局。对于小于 5K 的任何内容,该库都能创造奇迹。我通过更改引用直接使用d3.js 示例页面中的示例,以便它加载我的 json 文件。

有没有加快渲染速度的技巧?如果还有其他选择,那也很好。

4

5 回答 5

12

我怀疑您会找到任何可以在强制导向布局中呈现 50K 节点而不会减慢爬行速度的选项 -大多数实现都是 O(n3),我认为 D3 没有任何不同。

如果可以接受离线工具,您可以查看Gephi,这是一个基于桌面的工具,可以处理非常大的图表。

于 2011-10-18T17:34:33.257 回答
6

对我来说,当通过 d3 力导向图显示大量数据时,动画非常慢。

当我需要显示很多节点/链接时,我的计划是删除动画并制作静态力定向图。也许你可以试试?是的,它不那么有趣,但是一旦你有很多节点,我认为动画没有那么有用。

于 2012-03-16T22:38:30.893 回答
4

您可能想尝试使用 GraphGL 来可视化 Web 上的大型网络: https ://gephi.org/2011/gsoc-mid-term-graphgl-network-visualization-with-webgl/

于 2012-01-04T13:59:42.520 回答
2

对于 force layout 中超过 1k 的元素,请考虑使用 canvas 而不是 svg。它可以帮助渲染性能。请参见此处的示例:

https://vida.io/documents/Ye5eGKJrfn3xBmnS3

于 2014-07-07T17:27:59.347 回答
0

我知道问题很老,但无论如何.. 最适合大数据的是 cytoscapejs ( http://js.cytoscape.org/ )。我已经与图形库合作了几年,而 cytoscape 从未让我失望。

目前我正在测试visjs、d3v5 和 cytoscapejs v3,用于两种情况下的非常大的数据(甚至 100k 节点和 300k 边):当我有固定的位置时。虽然 d3 在位置固定并且在模拟中“关闭”力时工作得还不错,但 cytoscape 在这两种情况下都工作得更好。该库使用图形算法来计算布局,您甚至可以应用自己的算法进行布局。如果你想要有力量的布局,你可以尝试弹性。

http://js.cytoscape.org/#layouts

于 2019-07-03T08:54:20.287 回答