1

私はこのチュートリアルを使用して、いくつかの基本的なd3を学習しています。

私は「バインディングデータ」セクションにいますが、これまでのところかなり混乱しています。

var dataset = [],
    i = 0;

for(i=0; i<5; i++){
    dataset.push(Math.round(Math.random()*100));
}        

alert("Data: " + dataset)

var sampleSVG = d3.select("#viz")
    .append("svg:svg")
    .attr("width", 400)
    .attr("height", 75);    

sampleSVG.selectAll("rect")
    .data(dataset)
    .enter().append("svg:rect")
    .style("stroke", "gray")
    .style("fill", "white")
    .attr("height", 40)
    .attr("width", 75)
    .attr("x", function(d, i){return i*80})
    .attr("y", 20);

私の質問は次のとおりです。

  1. 5つの乱数のデータセットを作成しました。これらが長方形の幅に反映されないのはなぜですか?
  2. .append("svg:svg")長方形を参照していないので、長方形がselectAll("rect")存在しない場合、後でどうすればよいでしょうか。
  3. 匿名関数では、何dを指しますか?
  4. 匿名関数では、何iを指しますか?80を掛けるとは何ですか?
  5. データセット内のすべてのポイントを自動的にループしますか?最終的なコードチャンクでは、反復がないように見えるので、すべてのデータ要素に対してこれを行うだけだと思いますか?

混乱している!

4

1 に答える 1

1
  1. 長方形の幅は75に固定されており、乱数は使用されないためです。
  2. append( "svg:rect")は長方形を作成します
  3. dはデータセットを指し、これらは乱数になります。
  4. iはデータセットアイテムのインデックスであるため、最初のアイテムは0、2番目のアイテムは1、以下同様に4までです。データセットには5つのアイテムがあります。
  5. はい、あなたは正しいと思いました。
于 2012-05-30T15:49:28.490 に答える