Mam tabelę pączków zbudowaną przy użyciu narzędzia d3 z suwakiem jQuery, który umożliwia użytkownikowi wybór między różnymi punktami danych. Wykres animuje przejście między wartościami danych i wszystko jest w porządku.Kolejność segmentów wykresu pączków (pączków) w D3
Problem: Segmenty zawsze są renderowane w kolejności zgodnej z ruchem wskazówek zegara (od największego do najmniejszego). Oznacza to, że segmenty zmieniają swoją pozycję wokół wykresu w zależności od ich wielkości.
Takie zachowanie jest mylące dla użytkowników, ale niestety nie mogę wymyślić, jak to zmienić. Chciałbym, aby segmenty pozostały w swojej pierwotnej pozycji.
pracujących js-skrzypce: http://jsfiddle.net/kerplunk/Q3dhh/
Wierzę, że problem musi leżeć w funkcji, która robi rzeczywistego niego animację:
// Interpolate the arcs in data space.
function pieTween(d, i) {
var s0;
var e0;
if(oldPieData[i]){
s0 = oldPieData[i].startAngle;
e0 = oldPieData[i].endAngle;
} else if (!(oldPieData[i]) && oldPieData[i-1]) {
s0 = oldPieData[i-1].endAngle;
e0 = oldPieData[i-1].endAngle;
} else if(!(oldPieData[i-1]) && oldPieData.length > 0){
s0 = oldPieData[oldPieData.length-1].endAngle;
e0 = oldPieData[oldPieData.length-1].endAngle;
} else {
s0 = 0;
e0 = 0;
}
var i = d3.interpolate({startAngle: s0, endAngle: e0}, {startAngle: d.startAngle, endAngle: d.endAngle});
return function(t) {
var b = i(t);
return arc(b);
};
}
To działa świetnie! Dziękuję Ci bardzo. Czy to było gdzieś udokumentowane, że powinienem je znaleźć? Wyglądałem (szczerze) :) – Kerplunk
Jest w dokumencie dla układu kołowego, pod 'pie.sort'. Adres URL to https://github.com/mbostock/d3/wiki/Pie-Layout. – ckersch
W tej odpowiedzi znalazłem coś wartościowego - jako że ckersch mówi, że to ostatni kawałek, ".sort (zerowy)", który wyłącza sortowanie. – dumbledad