我認爲你可能需要使用量化的尺度而不是序數。 https://github.com/mbostock/d3/wiki/Ordinal-Scales說 -
序尺度有一個獨立域名,比如一組名稱或類別
,並在你的代碼,您使用的日期屬性,只給出了「範圍」你的2個值 - 數據中最早和最近的日期。那是一個離散域,但是非常有限,並且不會很好地表示你的數據。規模將只輸出最多2個值。
var now = Date.now();
var then = now - 1000;
var colors = d3.scale.ordinal()
.domain([then, now])
.range(['#ff0000','#0000ff']);
colors(then); // red
colors(now); // blue
colors(now - 500); // red... expecting violet
將'序號'更改爲'線性',並保持原樣。
var now = Date.now();
var then = now - 1000;
var colors = d3.scale.linear()
.domain([then, now])
.range(['#ff0000','#0000ff']);
colors(then); // red
colors(now); // blue
colors(now - 500); // violet
棘手的部分(至少對我)中的溶液記住d3.scale.linear的輸出()(上面的「顏色」變量)是一個函數。它可以像任何其他功能一樣被調用。
var fakeData = d3.range(then, now, 10);
var svg = d3.select('body')
.append('svg')
.attr({ height: 500, width: 500 });
var circle = svg.append('circle')
.attr({ r: 100, cx: 250, cy: 250 });
function changeTime(time){
circle.attr('fill', colors(time));
}
如果你想使用時間尺度。你需要使用'd3.time.scale()'。更多信息[** here **](https://github.com/mbostock/d3/wiki/Time-Scales)。如果你仍然需要幫助。請提供完整代碼的小提琴。 –
我不清楚你想要做什麼。就像[這個問題](http://stackoverflow.com/questions/20826989/d3-scatterplot-using-time-scale-on-x-axis-not-working-in-firefox)? –