2017-05-31 144 views
2

我使用具有顺序x轴的DC JS构建了折线图。它的工作原理,除了在x轴上有一些外部填充,我似乎无法摆脱。我希望最左边和最右边的数据点与图表的边缘齐平,没有填充。希望我不会错过显而易见的东西。DC JS:删除具有序号比例x轴的折线图的外部填充?

我认为我错误地设置了x轴标尺。如果有一个数据集是这样的:

var data = [ 
    { key: 'Monday', value: 3000000 }, 
    { key: 'Tuesday', value: 3100000 }, 
    { key: 'Wednesday', value: 3500000 }, 
    { key: 'Thursday', value: 3070000 }, 
    { key: 'Friday', value: 4500000 }, 
    { key: 'Saturday', value: 3003030 }, 
    { key: 'Sunday', value: 5010000 } 
]; 

这里就是我与x轴刻度做:

var ordinalScale = d3.scale.ordinal().domain(['Monday','Tuesday','Wednesday','Thursday','Friday','Saturday','Sunday']).rangeRoundBands([0,chartWidth]); 
chart.x(ordinalScale).xUnits(dc.units.ordinal); 

我也看了看序尺度D3的文档,但不是招还没有帮助。

这里有一个截屏(外来填充标记为红色): http://imgur.com/a/zmfF4

这里的工作JS提琴演示该问题: https://jsfiddle.net/qvp4fpzy/4/

回答

0

这是一个有点混乱,处理这两种dc.js和d3 .js以范围带为特色。

dc.js有自己内置的计算为酒吧/行x位置,但如果X比例为序,它会自动选择.rangeBands

if (_chart.isOrdinal()) { 
     _x.rangeBands([0, _chart.xAxisLength()], _rangeBandPadding, 
         _chart._useOuterPadding() ? _outerRangeBandPadding : 0); 
    } else // ... 

source link

所以我不不要以为你拨打.rangeRoundBands有什么影响。 (应dc.js使用rangeRoundBands代替rangeBands?也许吧,但它没有在这个问题上的重量)。

这是要影响third parameter to rangeBands,而这通过chart._outerRangeBandPadding()控制。 (忽略chart._useOuterPadding() - 这是向后兼容的东西。)

因此,所有你需要的这里是

chart._outerRangeBandPadding(0); 

no outer padding

Working fork of your fiddle.

+0

这工作!非常感谢。 – nblocks