dc.js 系列图表中的累积总和
Cumulative sum in series chart with dc.js
我有以下数据:
Store year earnings
A 2011 1000
A 2012 2000
A 2013 2000
A 2014 3000
B 2012 200
B 2012 300
B 2012 500
B 2014 3000
B 2015 4000
C 2013 2000
C 2013 200
C 2015 1200
C 2016 4000
我想做的是使用 dc.js 获取每个商店和每年的累计总和 并将其显示在系列图表中。
每年每家商店的累计金额为
Store year earnings
A 2011 1000
A 2012 3000
A 2013 5000
A 2014 8000
B 2012 1000
B 2014 4000
B 2015 8000
C 2013 2200
C 2015 3400
C 2016 7400
我四处搜索,发现可以像这样对一个简单的维度和组执行此操作:
function createCumulativeGroup(source_group) {
return {
all:function () {
var cumulate = 0;
return source_group.all().map(function(d) {
cumulate += d.value;
return {key:d.key, value:cumulate};
});
}
};
}
但是为了使用系列图表,我需要减少年份和商店,将两者放入复合键中。当我尝试将上述函数与系列图表一起使用时,累积发生在所有商店,导致比预期大得多的值。
如何计算适用于系列图表的累计总和?
您的 createCumulativeGroup
函数只是累加商店中的所有值。你需要让它通过商店积累价值。这应该有效:
function createCumulativeGroup(source_group) {
return {
all:function () {
var cumulate = {};
return source_group.all().map(function(d) {
if(cumulate[d.key[0]]) {
cumulate[d.key[0]] += d.value;
} else {
cumulate[d.key[0]] = d.value;
}
return {key:d.key, value:cumulate[d.key[0]]};
});
}
};
}
我有以下数据:
Store year earnings
A 2011 1000
A 2012 2000
A 2013 2000
A 2014 3000
B 2012 200
B 2012 300
B 2012 500
B 2014 3000
B 2015 4000
C 2013 2000
C 2013 200
C 2015 1200
C 2016 4000
我想做的是使用 dc.js 获取每个商店和每年的累计总和 并将其显示在系列图表中。
每年每家商店的累计金额为
Store year earnings
A 2011 1000
A 2012 3000
A 2013 5000
A 2014 8000
B 2012 1000
B 2014 4000
B 2015 8000
C 2013 2200
C 2015 3400
C 2016 7400
我四处搜索,发现可以像这样对一个简单的维度和组执行此操作:
function createCumulativeGroup(source_group) {
return {
all:function () {
var cumulate = 0;
return source_group.all().map(function(d) {
cumulate += d.value;
return {key:d.key, value:cumulate};
});
}
};
}
但是为了使用系列图表,我需要减少年份和商店,将两者放入复合键中。当我尝试将上述函数与系列图表一起使用时,累积发生在所有商店,导致比预期大得多的值。
如何计算适用于系列图表的累计总和?
您的 createCumulativeGroup
函数只是累加商店中的所有值。你需要让它通过商店积累价值。这应该有效:
function createCumulativeGroup(source_group) {
return {
all:function () {
var cumulate = {};
return source_group.all().map(function(d) {
if(cumulate[d.key[0]]) {
cumulate[d.key[0]] += d.value;
} else {
cumulate[d.key[0]] = d.value;
}
return {key:d.key, value:cumulate[d.key[0]]};
});
}
};
}