1

我有一个圆形包布局,它代表 json 文件中的一些数据。当我单击键盘上的左右箭头时,我希望更新包布局。我设法更新了圆圈的位置,但没有更新半径。你能看看下面的代码吗?我的圈子包并不是真正的分层,我的意思是我只有一个父级,id 为“coreCircle”的圈子,然后是里面的所有子级。

谢谢,RM

var pack = d3.layout.pack()
  .value(function(d) {
    return d.someField;
  })
  .children(
    function children(d) {
      return d.someArray;
  });

var corevis = d3.select('#svgCoreGroup');

// Creating the circle packed core
var gNodes = corevis.data([json]).selectAll("g.node")
  .data(pack.nodes, function(d) {return (d.children ? "coreCircle" : d.name)});

// Remove
gNodes.exit().remove()

// Update
corevis
  .data([json]).selectAll("g.node")
  .data(pack.nodes, function(d) {return (d.children ? "coreCircle" : d.name)})
  .attr("class", function(d) { return d.children ? "node" : "leaf node"; })
  .attr("id", function(d) { return d.children ? "coreCircle" : null; })
  .attr("transform", function(d) { return "translate(" + d.x + "," + d.y + ")"; })
  .selectAll("circle")
  .transition()
  .duration(500)
  .attr("r", function(d) { return d.children ? coreSize : d.r; });

var node = gNodes
  .enter().append("g")
  .attr("class", function(d) { return d.children ? "node" : "leaf node"; })
  .attr("id", function(d) { return d.children ? "coreCircle" : null; })
  .attr("transform", function(d) { return "translate(" + d.x + "," + d.y + ")"; });

node.append("circle")
  .attr("r", function(d) { return d.children ? coreSize : d.r; })
4

0 回答 0