-->

dc.js BARCHART条重叠(dc.js barChart bars overlapping)

2019-10-19 14:33发布

这是我的日期时间BARCHART。 当我使用一个小提琴(见这里 ),试图复制的问题,它按预期工作。 NB:数据需要一段时间(〜30秒),以从GitHub加载。

下面是图表中的代码:

    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);

我失去了一些东西明显在这里吗? 如果没有,任何想法,我应该开始调试? 我花了一些时间的量就这一个,我不能发现任何错误。

编辑:当我删除.xUnits指示,我变得非常瘦酒吧,但沿轴线以及放置。 这使我觉得有什么不对与杆的宽度计算。 我不知道该怎么虽然调试具体计算。 如果有谁知道,我会很高兴地掏了进去。

EDIT2:该width的的属性<g class="chart-body"><g class="stack _0"><rect class="bar"></rect></g></g>所述内元件svg都被设置为一个错误的值。 如果任何人都可以点我到这是在计算d3库,我也许可以把它从那里。

EDIT3:我发现我的问题的根源。 条的宽度不正确,因为当calculateBarWidth()已经运行一次,以实例的图,现在不即使dc.redrawAll()被调用运行。 在我来说,我先后加记录块到我的crossfilter和重绘图表。 新的问题是“如何强制calculateBarWidth()重新运行?

Answer 1:

.on("preRedraw", function (chart) {
        chart.rescale();
    });
    chart.on("preRender", function (chart) {
        chart.rescale();
    });

答案来自于这里 。



Answer 2:

我认为你正在寻找barChart.calculateBarWidth。 ( src/bar-chart.js ,如果你正在考虑提交PR;)

曾有报道针对它最近与序条形图做其他错误:

https://github.com/dc-js/dc.js/issues/533

我不知道是否还有与日期的错误。 这似乎很奇怪,我认为同样的代码将在一个工作小提琴而不是在你的网页...这是相当罕见的。



文章来源: dc.js barChart bars overlapping