2015-12-02 46 views
0

我試圖理解這個代碼:輸入參數'd'在D3.js函數中意味着什麼?

var w = 900; 
var h = 200; 
var barPadding = 1; 

var dataset = [ 5, 10, 13, 19, 21, 25, 22, 18, 15, 13, 
      11, 12, 15, 20, 18, 17, 16, 18, 23, 25 ]; 

//Create SVG element 
var svg = d3.select("div") 
    .append("svg") 
    .attr("width", w) 
    .attr("height", h); 

svg.selectAll("rect") 
.data(dataset) 
.enter() 
.append("rect") 
.attr("x", function(d, i) { 
     return i * (w/dataset.length); 
}) 
.attr("y", function(d) { 
     return h - (d * 4); 
}) 
.attr("width", w/dataset.length - barPadding) 
.attr("height", function(d) { 
     return d * 4; 
}) 

我無法弄清楚什麼是「d」和「我」的意思是作爲內回調函數的輸入參數。可能它非常簡單。

回答

4

當您給出data()函數的元素數組時,d3會在您執行enter()調用時爲您迭代它。在回調中,d, i意味着來自dataset數組及其索引的元素。

當寫:

svg.selectAll("rect") 
.data(dataset) 
.enter() 
.append("rect") 

D3產生一束<bar>元件,一個用於所述陣列中的每個條目(與原來的陣列上索引沿相關聯的數據是通過d, i給出每個條目)的。更重要的是,它還將數組中每個條目的數據與該DOM元素相關聯,如數據屬性。

+0

謝謝,現在我明白了 – irynabond

1

d是正在呈現的數據值,i是數據數組中數據值的索引。

因此,呈現第一個數據點時,d是5,i是0

相關問題