如何动态更改条形图(dc.js)中的bin大小?

时间:2020-03-11 11:27:29

标签: dc.js crossfilter

因此,我多次调用以下代码,但问题是条形图的bin大小固定在我要放置的第一个数据上,一切都会按原样进行更改,而不是bin大小。

barChart
        .width(1080)
        .height(138)
        .margins({top: 10, right: 10, bottom: 20, left: 50})
        .dimension(key_map[$(this).text()].Dim)
        .group(key_map[$(this).text()].Group)
        .colors(['#6baed6'])
        .x(d3.scale.ordinal().domain(key_map[$(this).text()].Dim)) 
        .xUnits(dc.units.ordinal)
        .elasticY(true)
        .yAxis().ticks(4);

    barChart.elasticX(true).filterAll();dc.redrawAll(); 

1 个答案:

答案 0 :(得分:0)

由于@Gordon,我终于弄明白了。

即使我正在调用elasticX(true);,键数组也被忽略了,所以我最终调用了chart.focus([all_the_keys_from_the group]);,它现在可以正常工作了。

barChart
    .dimension(key_map[$(this).text()].Dim)
    .group(key_map[$(this).text()].Group)
    .x(d3.scale.ordinal().domain(key_map[$(this).text()].Dim)) 
    .xUnits(dc.units.ordinal)
    .elasticX(true);
    var focus_keys = [];

    key_map[$(this).text()].Group.all().forEach(element => {
        focus_keys.push(element.key);
    });

    barChart.focus(focus_keys);
    barChart.filterAll(); dc.redrawAll();