dc.js - 无法平均绘制折线图

时间:2014-02-05 07:56:10

标签: javascript d3.js dc.js

我正在使用dc.js创建折线图。

fiddle的链接。

我面临的挑战是。我试图在平均值上绘制一个线图,这个值当前没有发生。

在小提琴中我有两个javascript变量,即dateHitsdateDimTotal

dateHits使用reduceSum生成,dateDimTotal是日期的平均值。

如果我使用dateHits对折线图进行分组。出现折线图没有任何问题。

但如果我将dateHits替换为dateDimTotal则不会出现任何内容。

有人在我做错的地方帮助我。

1 个答案:

答案 0 :(得分:0)

jsfiddle将按日期显示平均值。

平均值图:

enter image description here

(看起来与你的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; })

希望这会有所帮助。如果您有其他问题或需要澄清,请告诉我。