2014-02-14 34 views
3
var matrix = [ 
    [11975, 5871, 8916, 2868], 
    [ 1951, 10048, 2060, 6171], 
    [ 8010, 16145, 8090, 8045], 
    [ 1013, 990, 940, 6907] 
]; 

var tr = d3.select("body").append("table").selectAll("tr") 
    .data(matrix) 
    .enter().append("tr"); 

var td = tr.selectAll("td") 
    .data(function(d) { return d; }) 
    .enter().append("td") 
    .text(function(d) { return d; }); 

我不明白d代表的是什麼。有人能夠如此親切地引導我完成代碼嗎?.data(函數(d){return d;})在d3中返回什麼?

參考:https://github.com/mbostock/d3/wiki/Selections#wiki-remove

+0

[這個答案應該解釋在數據連接中使用函數](http://stackoverflow.com/a/21760476/3128209)。 – AmeliaBR

+0

[這個答案應該解釋函數作爲參數的用途](http://stackoverflow.com/a/21421101/3128209),包括它在'.text(function)'語句中的工作原理。 – AmeliaBR

回答

3

你在這裏什麼是nested selection,即你正在做一個選擇,然後根據該選擇。這也是對.data()參數中函數的解釋 - 它嵌套在第一個之下,所以它可以引用它。

尤其是,您傳遞的是.data(matrix)中的一組數組。 D3將爲該矩陣的每個元素做一些事情,即爲每個數組。在這裏,它被綁定到附加的tr元素。那麼當您再次撥打.data()時,您可以參考綁定到這些元素的數據(tr)。 function(d) { return d; }只是說D3應該使用已經綁定到它的數據。因爲這是一個數組,D3會爲它的每個元素做一些事情,即追加表格單元格元素。

相關問題