D3.js D3 circle pack上的circle文本插件

D3.js D3 circle pack上的circle文本插件,d3.js,text,zooming,circle-pack,D3.js,Text,Zooming,Circle Pack,我试图在我的D3 circle软件包上贴上标签,为此我使用了circle文本插件。我想像这个例子那样做。 问题在于当我放大节点时,标签位置和它们的光线的更新 我的代码: function zoom(d) { var k = diameter / d.r / 2; x.domain([d.x - d.r, d.x + d.r]); y.domain([d.y - d.r, d.y + d.r]); var focus0 = focus; focus = d; var

我试图在我的D3 circle软件包上贴上标签,为此我使用了circle文本插件。我想像这个例子那样做。 问题在于当我放大节点时,标签位置和它们的光线的更新

我的代码:

function zoom(d) {

  var k = diameter / d.r / 2;
  x.domain([d.x - d.r, d.x + d.r]);
  y.domain([d.y - d.r, d.y + d.r]);  

  var focus0 = focus; focus = d;


  var transition = d3.transition()
      .duration(d3.event.altKey ? 7500 : 750)
      .tween("zoom", function(d) {
        var i = d3.interpolateZoom(view, [focus.x, focus.y, focus.r * 2 + margin]);
        return function(t) { zoomTo(i(t)); };
      });


    circleText.radius(function (d) { return k * d.r- 5 ; });
  transition.selectAll('g.label')
     .attr('transform', function(d) {
                     return 'translate(' + x(d.x) + ',' + y(d.y) + ')';})

      .call(circleText);


}

function zoomTo(v) {

  var k = diameter / v[2]; view = v;
  node.attr("transform", function(d) { return "translate(" + (d.x - v[0]) * k + "," + (d.y - v[1]) * k + ")"; });
  node.attr("r", function(d) { return d.r * k;});

}
查看我的代码在中工作:查看我的代码在中工作: