D3.js로 작업 중이며 버튼을 클릭 할 때 내림차순/내림차순으로 내 바를 정렬하려고합니다. 그러나 sortBars 함수가 내 개체에서 올바른 값을 반환하는 데 문제가 있습니다. 이 엑스 스케일 (I)를 반환하면D3.JS를 사용하여 JS 객체의 'value'에 액세스하십시오.
var sortOrder = false;
var sortBars = function() {
sortOrder = !sortOrder;
svg.selectAll("rect")
.sort(function(a, b) {
if (sortOrder) {
return d3.ascending(a, b);
} else {
return d3.descending(a, b);
}
})
.transition()
.delay(function(d, i) {
return i * 50;
})
.duration(1000)
.attr("x", function(d, i) {
return xScale(i);
});
};
, 나는 그것이 적절하게 내 데이터 집합을 참조하지 압니다. 나는 그것을 i.value으로 배치하려고 시도했다. (이것은 내 데이터 세트에서와 같이 이름 붙여진 것이다.) 나는 이것이 정확하지 않다는 것을 안다. 그러나 내가 그것을 바꿀 때, 나는 최소한 바가 움직 이도록한다. 올바른 데이터에 어떻게 액세스합니까?
나는 이것을 위해 JSFiddle을 개발했습니다. 부담없이 놀아 라. 현재 Sort 버튼은 효과가 없습니다 (함수가 데이터에 올바르게 액세스하지 못함).
비교기 기능은 긍정적, 부정적 제로 반환해야합니다 :
거의 너무 단순 해 보입니다! 하하. 내 if/else 시도보다 더 좋아하는 것 같습니다. 내 문제는 xScale이 인덱스를 반환한다고 가정하고 있었고, sort() 자체와 함께한다고 생각조차하지 않았습니다 ... 지금 생각해 보면 더 논리적입니다. 내 텍스트를 업데이트했는지 확인하십시오. 아직 완료하지 않았습니까? 감사! – EnigmaRM