Javascript 树布局的预定义x和y值

Javascript 树布局的预定义x和y值,javascript,d3.js,Javascript,D3.js,我有一个简单的树布局示例,我想设置源节点和目标节点的值 数据如下: var Data = {"name" : "A", "info" : "tst", "childrens" : [ {"name" : "A1", x:100, y:100 }, {"name" : "A2", x:50, y:400 }, {"name" : "A3", x:50, y:100 }, {"name" : "A311", x:350, y:120 },

我有一个简单的树布局示例,我想设置源节点和目标节点的值

数据如下:

   var Data = {"name" : "A", "info" : "tst", "childrens" : [
      {"name" : "A1", x:100, y:100 },
      {"name" : "A2", x:50, y:400 },
      {"name" : "A3", x:50, y:100 },
      {"name" : "A311", x:350, y:120 },
      {"name" : "A312", x:250, y:170 },
      {"name" : "A312", x:175, y:200 }

    ]};
如您所见,我已经为每个节点定义了x&y值,以将它们定位在我想要的位置

然而,它似乎对布局没有任何影响

我已尝试将投影更改为:

            translate(" + d.x + "," + d.y + ")"
我还试图更改node变量,但它似乎具有与在投影上更改它相同的效果

我想知道是否可以使用treelayout设置位置,但这是不允许的

另外,我希望使用svg.symbol,而不是使用svg:circle:

   node.append("path")
       .attr("d", d3.svg.symbol().type(circle))
       .attr("transform", "translate(0,0)")
然而,它只显示了行,没有文本-不明白为什么

所以本质上我试着定位孩子&我选择的根

任何帮助或建议都将不胜感激

编辑:

var line=d3.svg.diagonal().data(数据).enter()


树布局(以及大多数其他布局)的全部要点在于它为您确定节点的位置。您试图做的事情完全不受支持

假设您已经有了节点位置,那么简单地将符号和线放置在您想要的位置似乎会容易得多。就是说,

svg.selectAll("circle").data(Data.childrens)
   .enter()
   .append("circle")
   .attr("cx", function(d) { return d.x; })
   .attr("cy", function(d) { return d.y; });
同样,对于链接,您需要自己计算。听起来您希望将父节点链接到它们的子节点,因此这将相对简单


这种方法还有一个优点,即您可以自由使用任何想要的节点/链接样式。

您好,谢谢您的回复。不能使用svg.Diagonal来计算链接节点之间的距离吗?线生成器仅用于连接给定的点。所以给d3.svg.diagonal()基本上两点就足够了,但您必须选择这两点,例如,为您想要的每个链接创建一组两个点。在编辑之后,是否有一种方法可以映射对象,使其通过我的数据获取其源/位置?看起来在原始数据中,您只有子节点的位置—在编辑之前,您需要计算要显示的每个节点的位置那样做。
svg.selectAll("circle").data(Data.childrens)
   .enter()
   .append("circle")
   .attr("cx", function(d) { return d.x; })
   .attr("cy", function(d) { return d.y; });