2014-10-23 3 views
0

Учитывая следующий быстрый набор, который строится с помощью дуг в D3:размещения этикетка d3 в конце дуг

segmentArc = d3.svg.arc().outerRadius(radius - chartInset).innerRadius(radius - chartInset - barWidth).startAngle(arcStartRad + startPadRad).endAngle(arcEndRad - endPadRad); 

Как переместить метки в каждом сегменте, так что кажется, выравнивание вправо (в конце каждого сегмента, противоположного центру)?

d3 arc chart

этикетки в настоящее время добавил это нравится:

 chart.append('text') 
      .attr('transform',() => { 

       var x = Math.round(segmentArc.centroid()[0]); 
       var y = Math.round(segmentArc.centroid()[1]); 

       return 'translate(' + x + ',' + y + ')'; 

      }) 
      .style("text-anchor", "middle") 
      .text(sectionLabel); 

ответ

0

Я решил эту проблему путем репликации каждой дуги сегмента, придавая ей прозрачную заливку и делает его ровно в два раза дольше. Оттуда это так же просто, как выработать центроид для прозрачной дуги.

Смежные вопросы