2014-09-25 106 views
0

我有一个使用.rangeRoundBands方法的条形图。我试图弄清楚如何摆脱钢筋外侧的填料,使钢筋走向X轴的边缘。D3.JS-无法使用.rangeRoundBands()删除填充

这里是我的x轴用我的X比例:

xScaleOrdinal = d3.scale.ordinal(); 

xScaleOrdinal 
     .rangeRoundBands([0, width], .1) 
     .domain(thedata.map(function(d) { return d.date; })); 

这是图表的外观现在:

enter image description here

+0

外填充是第三个参数为'.rangeRoundBands()',见[文档](https://github.com/mbostock/ D3 /维基/序尺度#ordinal_rangeRoundBands)。 – 2014-09-25 21:24:38

+0

@LarsKotthoff这不是解决方案。即使将此设置为零,当您有大量条形时,也可以为您提供外边距。我很好奇,如果有人有解决方案,因为我自己看过这个。 – explunit 2014-09-25 21:57:38

+0

请问您可以制作一个可重现的例子吗? – 2014-09-26 08:41:01

回答

0

.rangeRoundBands()的性质是这样的,它不能保证填充设置,因为它将组四舍五入到像素坐标。一般来说,如果在一个狭小的区域中显示大量的酒吧,事情会变得很时髦。

您可以通过扩展您正在绘制条的像素区域来解决此问题,或者只需使用rangeBands()而不是rangeRoundBands()即可解决此问题。

+0

感谢,rangeBands似乎工作:\t \t \t xScaleOrdinal.rangeBands([0,width],.1,0) – NewToJS 2014-09-27 14:34:25

0

.rangeRoundBands()函数接受第三个参数,该参数指定外部填充(围绕波段的填充而不是它们之间的填充)。因此,可能值得将其专门设置为0并查看是否解决了问题。

然后你的x轴码是这样的

xScaleOrdinal = d3.scale.ordinal(); 

xScaleOrdinal 
     .rangeRoundBands([0, width], 0.1, 0) 
     .domain(thedata.map(function(d) { return d.date; }));