Mam zestaw danych taki, że po posortowaniu w porządku rosnącym kręgi kończą się "ułożone", ale będą wyglądały prawidłowo rozmieszczone przy użyciu zerowej lub malejącej kolejności sortowania.d3.layout.pack układa kręgi w sortowaniu rosnącym
Kompletna przykładem jest tutaj: http://jsfiddle.net/SXLHx/3/.
Ktoś ma sugestię?
sortItems = function(a,b) {
var str,result;
switch(sortOrder%3){
case 0:
str = 'ascending';
result = a.size - b.size;
break;
case 1:
str = 'descending';
result = b.size - a.size;
break;
default:
str = 'null';
result = null;
}
document.getElementById("sortLbl").innerHTML = str;
return result;
};
pack = d3.layout.pack().sort(sortItems);
Niektóre dodatkowe info:
stwierdziliśmy, że jeśli usunąć przynajmniej dwa wpisy bloki, które mają wartość 0 (nie ma znaczenia, który dwa, ale to musiało być dwa) układ jest w porządku. http://jsfiddle.net/SXLHx/4/
również zastosowanie filtra nie dołączyć kręgi z 0 wartości tak:
// Create circles
node.append("circle")
.filter(function(d){return d.size > 0;})
.attr("r",function(d){return d.r;});
nie rozwiąże problemu układu. Może filtruję nieprawidłowo?
Wygląda jak błąd. –
Musimy zbadać dalej. Kolejność rosnąca działa w tym [plunk] (http://plnkr.co/edit/npUSyrG8sHsQrqUPw7Y7?p=preview), który jest oparty na tym [przykład] (http://bl.ocks.org/mbostock/4063530) . – FernOfTheAndes