私はこのチュートリアルを進めています -
http://flowingdata.com/2012/08/02/how-to-make-an-interactive-network-visualization/
わからない部分があります。
「最後に、ノード ID をノード オブジェクトにマッピングし、リンクのソースとターゲットを、生データにあった ID ではなく、ノード オブジェクト自体に置き換えます。これにより、D3 のフォース レイアウトが正しく機能し、それが可能になります。ノード配列とリンク配列の順序が乱れることを心配することなく、ノードを追加/削除できます。」
setupData = (data) ->
# initialize circle radius scale
countExtent = d3.extent(data.nodes, (d) -> d.playcount)
circleRadius = d3.scale.sqrt().range([3, 12]).domain(countExtent)
data.nodes.forEach (n) ->
# set initial x/y to values within the width/height
# of the visualization
n.x = randomnumber=Math.floor(Math.random()*width)
n.y = randomnumber=Math.floor(Math.random()*height)
# add radius to the node so we can use it later
n.radius = circleRadius(n.playcount)
# id's -> node objects
nodesMap = mapNodes(data.nodes)
# switch links to point to node objects instead of id's
data.links.forEach (l) ->
l.source = nodesMap.get(l.source)
l.target = nodesMap.get(l.target)
# linkedByIndex is used for link sorting
linkedByIndex["#{l.source.id},#{l.target.id}"] = 1
data
これは、関数 setupData() に関する部分の後に述べられています。ノード ID をノード オブジェクトにマップする意味がわかりません。ノード オブジェクトは後で update() メソッドによって作成されるようです。
これらのノード オブジェクトは何ですか? どのように mapNodes()