我有一个带d3.time.scalex轴的barChart .我每小时显示一些数据,但使用时,第一个和最后一个数据点条总是减少一半centerBar(true).
(使用centerBar(false)最后一个栏时完全消失.)
时间窗口基于数据本身,计算如下:
var minDate = dateDim.bottom(1)[0]["timestamp"];
var maxDate = dateDim.top(1)[0]["timestamp"];
.x(d3.time.scale().domain([minDate, maxDate]));
Run Code Online (Sandbox Code Playgroud)
最后一行设置时间范围域使用min和maxDate.这是它的样子:

我稍微增加了条宽,.xUnits(function(){return 60;})因为默认值很薄,第一个条在y轴内消失.
此外,我已经尝试通过减去/添加一小时到min/maxDate来更改域,但这会导致第一个栏的意外行为.

我使用以下来计算偏移量:
minDate.setHours(minDate.getHours() - 1);
maxDate.setHours(maxDate.getHours() + 1);
Run Code Online (Sandbox Code Playgroud)
是否有修复或解决方法在第一个和最后一个栏之前添加填充?
从minDate减去一个小时,并在maxDate中添加一个小时,以便在最小和最大数据的每一侧获得一小时的填充.
这里的技巧是使用d3.time.hour.offset并使用偏移量直到它看起来不错.
.x(d3.time.scale().domain([d3.time.hour.offset(minDate, -1), d3.time.hour.offset(maxDate, 2)])); `
Run Code Online (Sandbox Code Playgroud)
看到这个小提琴http://jsfiddle.net/austinlyons/ujdxhd27/3/