D3.js 在力图布局中将节点分为两组(左侧和右侧)

D3.js 在力图布局中将节点分为两组(左侧和右侧),d3.js,force-layout,D3.js,Force Layout,我有一些数据,我正试图以一种特定的方式绘制: 所有节点都有一种方法来识别它所属的组,比如位置:L或位置:R 我想考虑一下这个属性,所有的“l”(左)节点都在中心节点的左侧,所有的“R”(右)节点都在静态中心节点的右侧(类似于图中所画的) 我以前用过这个: tick = function () { nodes.forEach(function (n) { if (n.position == "L") { n.x -= force.alpha() *

我有一些数据,我正试图以一种特定的方式绘制: 所有节点都有一种方法来识别它所属的组,比如位置:L或位置:R

我想考虑一下这个属性,所有的“l”(左)节点都在中心节点的左侧,所有的“R”(右)节点都在静态中心节点的右侧(类似于图中所画的)

我以前用过这个:

tick = function () {

    nodes.forEach(function (n) {
        if (n.position == "L") {
            n.x -= force.alpha() * 80;
        }
        if (n.position == "R") {
            n.x += force.alpha() * 80;
        }
    });
。。。。 };

这种解决方案对于小型集合来说是可行的,但当节点达到一定数量时,比如1000+时,它就变得非常昂贵。 我看了这两个例子: 我在想也许我能解决这个问题,把页面上的两个力结合起来,试着把(静态的)中心节点拆开,把不同的节点拉到一边


欢迎任何建议,谢谢。

您可能需要一个。@Larskothoff谢谢您的评论,但不幸的是,这与我以前使用的逻辑相同,无法解决1000+节点的性能问题