这是我的日期时间barChart。当我使用小提琴(参见here)尝试复制问题时,它按预期工作。 注意:从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);
我错过了一些明显的东西吗?如果没有,我应该开始调试的任何想法?我花了相当多的时间在这个上面,但我找不到任何错误。
编辑:当我删除.xUnits
指令时,我会得到非常细小的条纹,但沿着轴放置得很好。这让我觉得计算条形宽度有问题。我不知道如何调试特定的计算。如果有人知道,我会很乐意深入研究它。
EDIT2:width
中<g class="chart-body"><g class="stack _0"><rect class="bar"></rect></g></g>
元素的svg
属性都设置为错误的值。如果有人能指出我在d3
库中计算的位置,我可以从那里拿走它。
EDIT3:我找到了问题的根源。条形的宽度不正确,因为当calculateBarWidth()运行一次以实例化图形时,即使调用dc.redrawAll(),它也不会再运行。在我的情况下,我连续添加了大量的记录到我的crossfilter并重绘图表。新问题是&#39;如何强制calculateBarWidth()重新运行?&#39;
答案 0 :(得分:5)
.on("preRedraw", function (chart) {
chart.rescale();
});
chart.on("preRender", function (chart) {
chart.rescale();
});
答案来自here。
答案 1 :(得分:2)
我认为您正在寻找barChart.calculateBarWidth。 (src/bar-chart.js
如果您正在考虑提交公关;)
最近报道的其他错误与序数条形图有关:
https://github.com/dc-js/dc.js/issues/533
我不知道日期是否还有错误。对我来说似乎很奇怪,相同的代码可以在小提琴中起作用但不在你的页面中......这种情况非常罕见。