我正在使用dc.js
创建折线图。
fiddle的链接。
我面临的挑战是。我试图在平均值上绘制一个线图,这个值当前没有发生。
在小提琴中我有两个javascript变量,即dateHits
和dateDimTotal
。
dateHits
使用reduceSum
生成,dateDimTotal
是日期的平均值。
如果我使用dateHits
对折线图进行分组。出现折线图没有任何问题。
但如果我将dateHits替换为dateDimTotal
则不会出现任何内容。
有人在我做错的地方帮助我。
答案 0 :(得分:0)
此jsfiddle
将按日期显示平均值。
平均值图:
(看起来与你的jsfiddle的原始绘图几乎相同,但y轴值不同)
我很快就会对代码添加一些评论。
编辑:评论:
你差不多完成了,但需要几个代码才能使整个应用程序正常工作。
我用以下方式重写了reduceXXX()函数:
function reduceAdd(p, v) {
++p.count;
p.total += v.value;
if (p.count == 0) {
p.average = 0;
} else {
p.average = p.total / p.count;
};
return p;
}
function reduceRemove(p, v) {
--p.count;
p.total -= v.value;
if (p.count == 0) {
p.average = 0;
} else {
p.average = p.total / p.count;
};
return p;
}
function reduceInitial() {
return {
count: 0,
total: 0,
average: 0
};
}
因此,有一个字段average
将始终保持正确的值。我认为这样的代码组织更清晰,但可能有一些替代方案。
我也添加了访问器功能(以便dc.js知道要显示的内容):
.valueAccessor(function(p) { return p.value.average; })
希望这会有所帮助。如果您有其他问题或需要澄清,请告诉我。