Используя D3.js v4, я пытаюсь обновить радиус круга при нажатии кнопки.Переход по радиусу круга D3.js v4 не работает должным образом
Проблема заключается в том, что вместо smooth transitions between the radii круг перерисовывается (от радиуса 1 до 0 и только затем до «радиуса2») при каждом обновлении.
Вот полный код: https://jsfiddle.net/4r6hp9my/
Вот круг код обновления сниппет:
var circles = svg.selectAll('circle').data(dataset);
var enter = circles
.enter()
.append('circle')
.attrs({
cx: w/2,
cy: h/2,
fill: colorsScale,
r: function(d,i){
if(i == myCounter){
var x = rScale(d)
return x;
}
}
});
d3.select('#theButton')
.on('click',function(){
myCounter++
if(myCounter == dataset.length){
myCounter = 0;
};
updateData()
});
function updateData(){
circles
.merge(enter)
.transition()
.attr('r',function(d,i){
if(i == myCounter){
return rScale(d);
}
});
labels
.text(function(d,i){
if(i == myCounter){
return d;
}
});
};
Сколько кругов вы думаете, когда вы впервые открываете скрипку? – echonax
Не уверен, что, если я понимаю вопрос, предполагается, что будет только один круг, радиус которого обновляется (основываясь на значениях в одномерном массиве) при каждом нажатии кнопки –
:) Откройте своего инспектора и загляните в свой элемент svg. вы добавили 9 кругов к вашему svg. То есть, 1 для каждого из ваших элементов 'dataset'. – echonax