修复D3强制定向布局中的节点位置

我希望力导向布局中的某些节点忽略所有力,并基于该节点的属性停留在固定位置,同时仍然能够拖动其他节点并对其施加排斥力并保持其链接线。


我以为就这么简单:


force.on("tick", function() {

    vis.selectAll("g.node")

        .attr("transform", function(d) {

            return (d.someAttribute == true) ?

               "translate(" + d.xcoordFromAttribute + "," + d.ycoordFromAttribute +")" :

               "translate(" + d.x + "," + d.y + ")"

        });

  });

我还尝试过手动设置每个刻度的节点的x和y属性,但是如果该节点受力影响,链接将继续浮动到该节点所在的位置。


显然,我对应该如何工作有基本的误解。如何在保持链接并仍允许它们可拖动的同时将节点固定在一个位置?


慕姐4208626
浏览 908回答 3
3回答

jeck猫

我不知道我是否完全理解注释-如果未定义fx或fy或null,则该节点将不会被修复,因为我没有为任何要启动的节点定义它,因此没有一个被修复。除非您告诉我,D3不会覆盖fx / fy值,就像我在这里所做的那样。(并没有真正的关系,但是我通过设置fx / fy值dragged而不是设置x / y 来更新代码段,使其运行起来更加平滑(因此,关键在于鼠标,不受其他力的影响。 )  
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript