If you want the fill to render without anti-aliasing, you may have to
offset by 0.5 pixels. The problem is that the stroke is centered on
the border of the fill, so, either the fill will land on the exact
pixel boundary, or the stroke. Alternatively, you can use
shape-rendering: crispEdges in CSS, but that's not great for
transitions. Also, you'll probably want to use rangeRoundBands with an
ordinal scale:
https://github.com/mbostock/d3/wiki/Ordinal-Scales#ordinal_rangeRoundBands
Mike