Я бы хотел показать ярлыки для крошечных фрагментов (chart.minAngleForLabel(0.05)
), избегая перекрытия текста.Как разместить ярлыки на круговой диаграмме dc.js?
Я добавил renderlet, что сдвигает метки в сторону внешнего края:
.on('renderlet', function(chart) {
chart.selectAll('text').attr('transform', function(d, i) {
var old = this.getAttribute('transform');
if (d.endAngle-d.startAngle > 0.3) { return old; }
var xy = old.slice(10,-1).split(',');
var m = 1.25 + (i%3) * 0.25;
return 'translate(' + (+xy[0]*m) + ',' + (+xy[1]*m) + ')';
})
})
и я довольно счастлива с ним (второе изображение после renderlet):
но он вызывает раздражающие переходы - метки перемещаются в центр тяжести, а затем отскакивают назад. Есть ли обходной путь для этого?
Спасибо за добавление нового мероприятия! Одним из способов сделать размещение меток более гибким является то, что функция '_externalLabelRadius' должна быть функцией (в' labelPosition() '). Я думаю, что отрицательный '_externalLabelRadius' можно было бы злоупотреблять, чтобы установить внутренний радиус. Просто мысль. – marcin
А это отличная идея. Я также думал о регуляторе положения метки, чтобы помочь изменить исходную рассчитанную позицию, как вы делаете, но то, что вы предлагаете, может быть более полезным. – Gordon
Добавлена проблема для обсуждения/решения: https://github.com/dc-js/dc.js/issues/945 – Gordon