我無法制作顯示按周(和不同年份)數據組的正確圖形。dc.js /交叉過濾器尺寸(年/周)
僞SQL會給:
select sum ('task')
group by 'year', 'week' (and maybe later 'site')
我的數據看起來或多或少是這樣的:
{ "date" : "20150427", "week" : 18, "site" : "a" "task" : 3, }
{ "date" : "20150427", "week" : 18, "site" : "b" "task" : 4, }
{ "date" : "20150427", "week" : 18, "site" : "c" "task" : 2, }
{ "date" : "20150427", "week" : 18, "site" : "d" "task" : 3, }
{ "date" : "20150428", "week" : 18, "site" : "a" "task" : 3, }
{ "date" : "20150428", "week" : 18, "site" : "b" "task" : 3, }
{ "date" : "20150429", "week" : 18, "site" : "c" "task" : 2, }
{ "date" : "20150429", "week" : 18, "site" : "d" "task" : 3, }
{ "date" : "20140512", "week" : 20, "site" : "d" "task" : 6, }
{ "date" : "20140512", "week" : 20, "site" : "a" "task" : 6, }
{ "date" : "20140513", "week" : 20, "site" : "b" "task" : 4, }
{ "date" : "20140513", "week" : 20, "site" : "c" "task" : 1, }
{ "date" : "20140519", "week" : 21, "site" : "b" "task" : 2, }
{ "date" : "20140519", "week" : 21, "site" : "c" "task" : 1, }
{ "date" : "20140519", "week" : 21, "site" : "d" "task" : 3, }
{ "date" : "20140519", "week" : 21, "site" : "a" "task" : 1, }
{ "date" : "20140520", "week" : 21, "site" : "b" "task" : 2, }
{ "date" : "20140520", "week" : 21, "site" : "c" "task" : 3, }
{ "date" : "20140520", "week" : 21, "site" : "d" "task" : 1, }
{ "date" : "20140520", "week" : 21, "site" : "a" "task" : 1, }
這是我的數據的樣本,它可以有不同的年份,網站或任務
我試過了,它不起作用,因爲barChart累積了所有年份的周:
d3.json("/graph", function(dataJson) {
var dataTable = dc.dataTable("#dc-table-graph");
var barChart = dc.barChart("#chart-bar-ordersperweek");
var data = dataJson;
var dateFormat = d3.time.format("%Y%m%d");
data.forEach(function (d) { d.date = dateFormat.parse(d.date); });
//dimension
var dateDim = ndx.dimension(function (d) { return d.date; });
var weekDim = ndx.dimension(function(d) {return d.week;});
//group
var orderByWD = weekDim.group().reduceSum(function (d) { return d.task; });
barChart
.width(1000).height(250)
.dimension(weekDim)
.group(orderByWD)
.x(d3.scale.ordinal().domain(d3.range(minWeek.week-1,maxWeek.week+1)))
.xUnits(dc.units.ordinal)
.y(d3.scale.linear().domain([0, 6000]))
.margins({top: 20, right: 30, bottom: 50, left: 80})
.label(function(d) { return d.value})
;
dataTable.width(800).height(800)
.dimension(dateDim)
.group(function (d) { return 'Week ' + d.week})
.size(5000)
.columns([
function (d) { var format = d3.format('02d');
return d.date.getFullYear() +'/'+ format(d.date.getMonth()+1) + '/' + format(d.date.getDate()); },
function (d) { return d.week; },
function (d) { return d.site; },
function (d) { return d.task; }
])
.sortBy(function (d) { return Number(d.date) + d.task; })
.order(d3.descending);
dataTable.on('renderlet', function(chart){
chart.selectAll('.dc-table-group').classed('info',true);
});
dc.renderAll();
我的目標是總結同一周發生的所有任務,並將其繪製到行圖中,當我選擇一週更新所選星期的數據表時。
在dataTable中我怎麼總結(累積)按網站分組的任務?
感謝所有幫助
編輯 我有添加的jsfiddle https://jsfiddle.net/d4qsd8wh/
我認爲基於尺寸,而不是組dataTable的運行,所以你可能需要創建一個假的維度,返回要顯示的記錄。如果你使用jsfiddle或類似的東西來組裝一個工作示例,我或其他人可能會爲你工作。 –
我只是將它加入 https://jsfiddle.net/d4qsd8wh/ – okuteur