.elasticX(true)不适用于dc.js

时间:2016-04-08 08:27:54

标签: dc.js

我有一个复合线图

.elasticX(true)不起作用:/有人可以帮助我吗

var composite = dc.compositeChart("#durationline-chart");
    composite.width(1500).height(350)
        .group(Durations)
        .brushOn(true)
        .yAxisLabel("Duration")
        .x(d3.scale.ordinal())
        .xUnits(dc.units.ordinal)
        .margins({ top: 10, left: 50, right: 10, bottom: 50 })
        .elasticY(true)
        .elasticX(true)
        .renderlet(function(chart) {
                chart.selectAll("g.x text")
                    .attr('transform', "rotate(+20)");
            })
        .compose([
            dc.lineChart(composite)
                .group(Testcase_Time, "Time")
                .colors('#1E90FF'),
            dc.lineChart(composite)
                .group(Testcase_Smartkey, "Smartkey")
                .colors('red')]);

编辑:这是jsfiddle:https://jsfiddle.net/gordonwoodhull/o9xx3fmm/

1 个答案:

答案 0 :(得分:3)

我认为你的意思是在过滤图表时弹性不会被踢入。

这是因为如果它们是空的,则crossfilter仍会返回bin - 它们只有零值。所以dc.js仍然会检测所有垃圾箱的域,包括空箱。

你可以做的是使用假组删除空箱

function remove_empty_bins(source_group) {
    return {
        all:function () {
            return source_group.all().filter(function(d) {
                return d.value != 0;
            });
        }
    };
}


var filtered_group = remove_empty_bins(group);

chart.dimension(dim)
    .group(filtered_group)
    ...

然后dc.js将仅检测非零值的域。更多详情in the FAQ

您必须将此应用于构成图表的所有组。