如果你想有兩個靠近邊界的邊界蜱和蜱(最大最小)值,你可以修改源。
在nv.models.axis(),有當showMaxMin是真正的底/頂部取向給出一個緩衝:
if (showMaxMin && (axis.orient() === 'top' || axis.orient() === 'bottom')) {
var maxMinRange = [];
wrap.selectAll('g.nv-axisMaxMin')
.each(function(d,i) {
try {
if (i) // i== 1, max position
maxMinRange.push(scale(d) - this.getBoundingClientRect().width - 4); //assuming the max and min labels are as wide as the next tick (with an extra 4 pixels just in case)
else // i==0, min position
maxMinRange.push(scale(d) + this.getBoundingClientRect().width + 4)
}catch (err) {
if (i) // i== 1, max position
maxMinRange.push(scale(d) - 4); //assuming the max and min labels are as wide as the next tick (with an extra 4 pixels just in case)
else // i==0, min position
maxMinRange.push(scale(d) + 4);
}
});
// the g's wrapping each tick
g.selectAll('g').each(function(d, i) {
if (scale(d) < maxMinRange[0] || scale(d) > maxMinRange[1]) {
if (d > 1e-10 || d < -1e-10) // accounts for minor floating point errors... though could be problematic if the scale is EXTREMELY SMALL
d3.select(this).remove();
else
d3.select(this).select('text').remove(); // Don't remove the ZERO line!!
}
});
}
我只是刪除這些緩衝區:
try {
if (i) // i== 1, max position
maxMinRange.push(scale(d));
else // i==0, min position
maxMinRange.push(scale(d))
}catch (err) {
if (i) // i== 1, max position
maxMinRange.push(scale(d));
else // i==0, min position
maxMinRange.push(scale(d));
}
使用'.tickValues()'而不是'.ticks()'。 – 2014-10-29 09:53:42
我已經嘗試過使用'.tickFormat()',但它給了我上面缺少tickLabels的過濾器。另外,使用這個技巧時,隱藏的標籤甚至不會顯示在工具提示中。我相信'tickValues()'會有相同的結果。 – yonasstephen 2014-10-29 13:24:32
嗯,我會使用x軸的時間尺度 - 這應該可以讓您更好地控制所顯示的內容。 [這個問題](http://stackoverflow.com/questions/14058876/how-do-i-display-dates-on-the-x-axis-for-nvd3-d3-js)應該是有幫助的。 – 2014-10-29 13:41:15