var ndx = crossfilter(data);
...
var dayName=["0.Sun","1.Mon","2.Tue","3.Wed","4.Thu","5.Fri","6.Sat"];
var dayOfWeek = ndx.dimension(function (d) {
var day = d.dd.getDay();
return dayName[day];
});
var dayOfWeekGroup = dayOfWeek.group();
var dayOfWeekChart = dc.rowChart("#day-of-week-chart");
dayOfWeekChart.width(180)
.height(180)
.group(dayOfWeekGroup)
.label(function(d){return d.key.substr(2);})
.dimension(dayOfWeek);
내가있어 문제는 데이터의 주 현재의 일이 내 rowChart
에 표시되도록하고, 보장은 매일 없다 모든 데이터 세트에 표시됩니다.
이것은 많은 유형의 카테고리에서 바람직한 행동이지만, 낮과 월 이름과 같은 짧고 잘 알려진 목록을 생략하면 다소 혼란 스럽습니다. 대신 빈 행이 포함됩니다.
barChart
의 경우 .xUnits(dc.units.ordinal)
과 같은 것으로 .x(d3.scale.ordinal.domain(dayName))
을 사용할 수 있습니다.
rowChart
에 대해 동일한 작업을 수행 할 수있는 방법이있어 데이터에 존재하는지 여부에 관계없이 모든 요일이 표시됩니다.
crossfilter 라이브러리를 이해 했으므로 차트 레벨에서이 작업을 수행해야하며 치수는 그대로입니다. 나는 dc.js 1.6.0 api reference과 d3 scales 문서를 파고 들었지만 찾고있는 것을 찾지 못했습니다. 0 어떤 누락 된 행을 작성합니다 다음과 같이 호출
function ordinal_groups(keys, group) {
return {
all: function() {
var values = {};
group.all().forEach(function(d, i) {
values[d.key] = d.value;
});
var g = [];
keys.forEach(function(key) {
g.push({key: key,
value: values[key] || 0});
});
return g;
}
};
}
:
이 @Gordon's answer을 바탕으로, 나는 다음과 같은 기능을 추가 한 솔루션
.group(ordinal_groups(dayNames, dayOfWeekGroup))
감사합니다. 이것은 내게 많은 도움이되었습니다. – asquithea