我希望我的力导向布局中的一些节点忽略所有力,并基于节点的属性停留在固定位置,同时仍然能够被拖动并对其他节点施加排斥力,并保持其链接线。
我原以为事情会很简单:
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属性,但如果节点受到力的影响,链接会继续漂浮到节点所在的位置。
显然,我对这是如何工作的有一个基本的误解。如何在保留链接并允许它们可拖动的同时,将节点固定在某个位置?
发布于 2012-05-01 23:34:39
将所需节点上的d.fixed
设置为true,并将d.x
和d.y
初始化为所需位置。然后,这些节点仍将是模拟的一部分,您可以使用常规显示代码(例如,设置变换属性);但是,由于它们被标记为固定,因此只能通过拖动移动它们,而不能通过模拟移动它们。
有关更多详细信息,请参见强制布局文档(v3 docs、current docs),还可以查看根节点在this example中的定位方式。
https://stackoverflow.com/questions/10392505
复制相似问题