使用许多节点和链接加快d3部队布局

Speed up d3 force layout with many nodes and links

本文关键字:d3 布局 链接 许多 节点      更新时间:2023-09-26

我想制作一个可视化,其中包含大量具有d3力布局的节点(超过500个节点)。虽然它在多达200个节点上正常工作,但在大约500个节点上却变得非常慢,因为布局从一帧到下一帧都会出现问题,节点上的鼠标悬停等事件远没有响应。这让我问了几个问题。

  • 节点数量是否存在某种限制,之后不建议使用强制布局?如果是的话,是否有其他库可以处理这项工作?

  • 如果我想用d3加快流程,哪些部件应该进行优化?我试着尽量减少css/attributes标记的使用(只给节点一个半径和填充颜色+给链接一个笔划宽度和笔划颜色),并减少交互的使用(鼠标悬停事件),但对保存所有信息的force对象是否可以做更多的优化?数据的大小必须起到一定的作用。。。

感谢您的投入!

这样做的一种方法不是处理每个tick事件,而是只处理其中的一小部分,例如跳过指定的数量或根据其他考虑动态调整事件数量。

如果希望平滑移动,请在已处理的tick事件中设置的位置之间添加过渡。当然,您也可以将这些想法结合起来,在转换运行时跳过事件,在转换完成后处理第一个事件。