dc.js barChart条重叠

Cha*_*apo 1 javascript visualization data-visualization d3.js dc.js

错误的图表

这是我的日期时间barChart.当我使用小提琴(见此处)尝试复制问题时,它按预期工作.注意:从github加载数据需要一段时间(~30秒).

以下是图表的代码:

    pnlPerDaybarChart
    .height(300)
    .width(700)
    .dimension(dims.date)
    .group(groups.date.pnlSum)
    .valueAccessor(function(d) {
        return Math.abs(d.value);
    })
    .renderTitle(false)
    .x(d3.time.scale().domain([minDate,maxDate]))
    .xUnits(d3.time.days)
    .colors(colorChoice)
    .colorAccessor(function(d) {
            if (+d.value>0) {
                return("positive");
            } else {
                return("negative");
            }
        })
    .brushOn(true)
    .elasticY(true)
    .margins({left: 70 ,top: 10, bottom: 30, right: 50})
    .centerBar(true);
Run Code Online (Sandbox Code Playgroud)

我错过了一些明显的东西吗?如果没有,我应该开始调试的任何想法?我花了相当多的时间在这个上面,我找不到任何错误.

编辑:当我删除.xUnits指令时,我得到非常瘦的条,但沿着轴放置得很好.这让我觉得计算条形宽度有问题.我不知道如何调试那个特定的计算.如果有人知道,我会很乐意深入研究它.

EDIT2:所有元素的width属性都设置为错误的值.如果有人能指出我在图书馆计算的地方,我可以从那里拿走它.<g class="chart-body"><g class="stack _0"><rect class="bar"></rect></g></g>svgd3

EDIT3:我找到了问题的根源.条形的宽度不正确,因为当calculateBarWidth()运行一次以实例化图形时,即使调用dc.redrawAll(),它也不再运行.在我的情况下,我连续添加了大量的记录到我的crossfilter并重绘图表.新问题是'如何强制calculateBarWidth()重新运行?'

Cha*_*apo 5

.on("preRedraw", function (chart) {
        chart.rescale();
    });
    chart.on("preRender", function (chart) {
        chart.rescale();
    });
Run Code Online (Sandbox Code Playgroud)

答案来自这里.