2016-11-08 106 views
4

我正在制作一个半圈甜甜圈图表,目前看起来像这样:https://jsfiddle.net/rcxp0udt/如何在半圆环图的两半上设置标签?

您可以注意到所有标签都在图表的右侧。如何,我想让它们看起来像这样:http://prntscr.com/d4p8qb - 使半圆的前半部分的标签位于一侧,另一半位于另一侧。这里是代码的一部分,负责的是:

polyline.transition().duration(1000) 
    .attrTween("points", function(d){ 
     this._current = this._current || d; 
     var interpolate = d3.interpolate(this._current, d); 
     this._current = interpolate(0); 
     return function(t) { 
      var d2 = interpolate(t); 
      var pos = outerArc.centroid(d2); 
      pos[0] = radius * 0.95 * (midAngle(d2) < Math.PI ? 1 : -1); 
      return [arc.centroid(d2), outerArc.centroid(d2), pos]; 
     }; 
    }); 

然而,每一个解决方案,我在我的测试,到目前为止试图达到这个已经结束了失败。如果你有任何想法如何实现这个效果,请让我知道!

回答

1

而不是使用midAngle(d2) < Math.PI的,使用midAngle(d2) > 0

screenshot of updated pie chart

让这种变化,其中添加文本和绘制文本折线(线165,175和202)。