Я новичок и пытаюсь поиграть с моими данными. Я сначала визуализирую эти круги следующим образом:Как выбрать вложенные элементы данных в d3
circle = svg.selectAll('circle')
.data(dataFile)
.enter()
.append("circle")
.attr("stroke", "black")
.attr("id", function(d,i){return "id_" + i.toString();})
.attr("class", function(d){return "Color_" + d.Cyl;})
.attr("fill", function(d) {return color(d.Cyl);})
.attr("cx", function(d) { return Scale.xScale(d.Weight); })
.attr("cy", function(d) { return Scale.yScale(d.DealerCost); })
.attr("r", r)
.call(drag);
Затем я использую функцию nest() для группировки своих данных.
var data = d3.nest()
.key(function(d) { return d.Cyl;})
.rollup(function(d) {
return d3.sum(d, function(g) {return Number(g.value); });
}).entries(csv);
Наконец я пытаюсь перевести круги, основанные на некоторых логик и это работает отлично.
for(j=0; j<data.length;j++)
{
svg
.selectAll(".Color_" + data[j].key)
.transition()
.delay(function(d,i) { return 100; })
.duration(1000)
.ease("linear")
.attr("cx", function(d,i) { return Scale.xScale(data[j].key})
.attr("cy", function(d,i) { return height - (i/val);})
}
Однако некоторые эксперты сказали мне, если я использую Для цикла с d3.selection существует высокая вероятность того, что я делаю что-то неправильно. Поэтому я попытался преобразовать последнюю часть своего кода в код ниже, но он не работает. Есть идеи?
svg
.selectAll(function(d){return ".Color_" + d.key;})
.transition()
.delay(function(d,i) { return 100; })
.duration(1000)
.ease("linear")
.attr("cx", function(d,i) { return Scale.xScale(d.key})
.attr("cy", function(d,i) { return height - (i/val);})
}
Спасибо за ответ, но это переведет все круги вместе. Я попытался сгруппировать свои круги, и я хочу выбрать круги, которые попадают в каждую группу, а затем переводить их. Имеет ли это смысл? –
Ну, читайте свой вопрос, группировка кругов на самом деле не очевидна. Вам нужно предоставить дополнительную информацию о том, как вы хотите группировать и как выглядят ваши данные. Возможно, вы могли бы попытаться настроить JSFiddle, чтобы поиграть. – altocumulus