2013-06-04 51 views
0

我試圖數組索引映射到d3.js的時間範圍,因爲我沒有爲數組個別日期 - 我只知道值是1900年和2000年D3時間尺度

var data = [45,678,490...]; // length 820 

var x = d3.time.scale().range([0, width]).domain([new Date(1900, 0, 0), new Date(2000, 0, 0)]); 

// line function 
var line = d3.svg.line() 
    .x(function(d,i) { 
    // here map i to date between domain min/max  
     return x(i); 
    }) 
    .y(function(d) { 
     return y(d); 
    }); 

有沒有比這個手動計算每個數組值的日期更聰明的方法?也許計算步驟和遞增?

+0

我不知道你想做什麼。它看起來像你的數組中只有數字,但你不會將它們轉換爲代碼中的日期。也許你想要2個尺度,一個將數組中的數字映射到日期,另一個將該日期映射到座標?當然,你也可能只有一個將數字映射到座標的單一比例。 –

+0

我將數組值[45,678,490 ...]映射到y軸,但是我的問題是將數組索引值[0,1,2,3,4 ...]映射到1900和2000之間的日期。 – MALK

回答

1

使用另一張scale從索引值映射到日期:

var arrayScale = d3.time.scale() 
        .domain([0, data.length]) 
        .range([new Date(1900, 0, 0), new Date(2000, 0, 0)]); 
+0

就這麼簡單 - 感謝Adam。 – MALK