如何将dc stack-bar示例汇总到单个栏中?

时间:2016-07-13 23:53:28

标签: d3.js dc.js

http://dc-js.github.io/dc.js/examples/stacked-bar.html”我想将这种数据集滚动到单个条形堆积条形图中。我改变了

 speedSumGroup       = runDimension.group().reduce(function(p, v) {
                    p[v.Expt] = (p[v.Expt] || 0) + v.Speed;
                    return p;
                }, function(p, v) {
                    p[v.Expt] = (p[v.Expt] || 0) - v.Speed;
                    return p;
                }, function() {
                    return {};
                });

speedSumGroup2 = runDimension.groupAll().reduce(function(p, v) {

并检查该组显示的数据汇总到预期的单一数据。

Object {1: 18180, 2: 17120, 3: 16900, 4: 16410, 5: 16630}

但是我用.value()检查数据,而原始版本需要一个all(),而这个组不能用于图表

chart
                .width(768)
                .height(480)
                .x(d3.scale.linear().domain([1,21]))
                .margins({left: 50, top: 20, right: 10, bottom: 20})
                .brushOn(false)
                .clipPadding(10)
                .title(function(d) {
                    return d.key + '[' + this.layer + ']: ' + d.value[this.layer];
                })
                .yAxisLabel("This is the Y Axis!")
                .dimension(runDimension)
                .group(speedSumGroup2, "1", sel_stack('1'))
                .renderLabel(true);

给出“a.group.all不是函数”错误。 dimension.groupAll()的结果是一个可以插入图表的标准组吗?

1 个答案:

答案 0 :(得分:1)

好问题 - 它从来都不清楚一个群体是什么样的对象。

正如您所推测的那样,dc.js排行榜预计会出现#34;常规"小组,而不是小组。这是您可以使用的转换功能:

function regularize_groupAll(groupAll) {
    return {
        all: function() {
            return [{key: 'all', value: groupAll.value()}];
        }
    };
}

像这样使用:

var speedSumReg2 = regularize_groupAll(speedSumGroup2);
...
chart
    .group(speedSumReg2, "1", sel_stack('1'))
    .stack(speedSumReg2, "2", sel_stack('2'))
...