如何告诉D3使树形图垂直(自上而下)而不是从左到右?

jos*_*hls 9 javascript d3.js

我正在看这个使用集群布局将X和Y坐标分配给树形图上的节点的示例.如何从顶部向下,而不是从左到右的默认情况下告诉群集布局?

Bra*_*sen 12

对于您链接的示例,只需翻转使用X和Y坐标.这可以通过改变来完成

var diagonal = d3.svg.diagonal()
  .projection(function(d) { return [d.y, d.x]; });
Run Code Online (Sandbox Code Playgroud)

var node = vis.selectAll("g.node")
  .data(nodes)
 .enter().append("g")
   .attr("class", "node")
   .attr("transform", function(d) { return "translate(" + d.y + "," + d.x + ")"; })
Run Code Online (Sandbox Code Playgroud)

var diagonal = d3.svg.diagonal()
  // Flip the values here.
  .projection(function(d) { return [d.x, d.y]; });
Run Code Online (Sandbox Code Playgroud)

var node = vis.selectAll("g.node")
   .data(nodes)
 .enter().append("g")
  .attr("class", "node")
  // Flip the values here.
  .attr("transform", function(d) { return "translate(" + d.x + "," + d.y + ")"; })
Run Code Online (Sandbox Code Playgroud)

这是一个JSFiddle,显示了上面的变化.

  • 根据你的宽度和高度,我还必须将`tree.size([h,w])`更改为`tree.size([w,h])` (3认同)