Comprender cómo D3.js une los datos a los nodos

Estoy leyendo la documentación de D3.js y me resulta difícil de entenderelselection.data método de la documentación.

Este es el código de ejemplo que figura en la documentación:

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; });

Entiendo la mayor parte de esto, pero qué está pasando con el.data(function(d) { return d; }) sección de lavar td declaración?

Mi mejor suposición es la siguiente:

Losvar tra instrucción @ ha vinculado una matriz de cuatro elementos a cada nodo trLosvar tda instrucción @ luego usa esa matriz de cuatro elementos como sus datos, de alguna manera

Pero ¿cómo funciona.data(function(d) { return d; }) en realidad obtener esos datos, y ¿qué devuelve?

Respuestas a la pregunta(6)

Su respuesta a la pregunta