흥미로운 문제! 피벗과 다소 비슷하게 들리는데, requested for crossfilter here.
이
- 당신은 클릭 할 수 없습니다, 다른 차원
- 에 필터를 반영하지만 것 : 해결책은 그러나주의의 몇 가지가있다 "가짜 그룹"과 "가짜 차원"을 사용하여 마음에 온다 (무엇을 기록하는 것은 그것이 선택 때문에?) 순서로 차트의 행은 무엇을 필터링하는
가짜 그룹 생성자는 다음과 같습니다
function regroup(dim, cols) {
var _groupAll = dim.groupAll().reduce(
function(p, v) { // add
cols.forEach(function(c) {
p[c] += v[c];
});
return p;
},
function(p, v) { // remove
cols.forEach(function(c) {
p[c] -= v[c];
});
return p;
},
function() { // init
var p = {};
cols.forEach(function(c) {
p[c] = 0;
});
return p;
});
return {
all: function() {
// or _.pairs, anything to turn the object into an array
return d3.map(_groupAll.value()).entries();
}
};
}
무엇을 원하는 모든 행을 객체로 축소 한 다음 객체를 배열 형식으로 변환하는 중입니다. dc.js는 이 반환 될 것으로 예상합니다.
이 생성자에 임의의 차원을 전달할 수 있습니다. 이러한 행을 필터링 할 수 없기 때문에 색인이 생성되는 것은 중요하지 않지만 모든 차원에 영향을 미치기 때문에 자체 차원을 갖고 싶어합니다. 다른 차원 필터. 또한이 생성자에 그룹으로 변환하려는 열의 배열을 지정하고 그 결과를 "그룹"으로 사용하십시오.
예.
var dim = ndx.dimension(function(r) { return r.a; });
var sidewaysGroup = regroup(dim, ['a', 'b', 'c', 'd']);
여기
전체 예 : http://jsfiddle.net/gordonwoodhull/37uET/6/이
(? 불량의 차트 결과의 행을 클릭 어떻게 필터링하도록되어 무엇 때문에주의)
당신의 구조를 변경할 수 있습니다 데이터?{금액 : 1, 카테고리 : '비용'}, {금액 : 2, 카테고리 : '수익'}, {금액 : 3, category : 'overhead'}]; 이 변경을 수행하면 범주 차원 및 reduceSum 그룹과 함께 표준 행 표를 사용할 수 있습니다. –
나는 원래 이것을 시도했지만 여러 교차 필터에 걸쳐 혼란스러운 호출 업데이트를 얻었으므로이 패턴 (4 회까지)을 따르는 꽤 다른 몇 개의 행 표가 있습니다. 필자는 이미 하나의 행에 월간 버전이 있고 그 둘레에 unqiue ID를 통해 데이터를 업데이트하는 두 가지 구조의 데이터가 있습니다. 나는 그것을 받아 들일 수 없다는 것을 쉽게 알 수없는 해결책을 가지고있다. – user3836998
나는 당신의 옵션이 1) 복합 차트, 2) 스택 차트, 3) 데이터 구조 변경이라고 생각한다. 복합 차트는 가장 적합하게 들립니다. "열"차트를 작성하고 나면 복합 차트를 사용하여 차트를 하나의 차트로 결합 할 수 있습니다. 그러나 차트를 결합 할 때 행이 서로 겹치지 않도록 행 갭과 오프셋을 수동으로 관리해야 할 수 있습니다. –