1

私が持っているデータポイントごとに要素を作成し、現在のデータポイントに基づいて各要素にいくつかの<g>異なる要素を追加しようとしています。私は次のようなことを試しました:<text><g>

var g = vis.selectAll("g").data(dd,function(d){ return d.data.name+d.x+d.y+d.s; });

    var gs = g.enter().append("g");         
        g.exit().remove();

    var t = gs.selectAll("text").data(function(d) { console.log(d); return d; });
    t.enter().append("text").attr("x",function(d){ return d.x+d.s/2; })
        .attr("y",function(d){ return d.y+d.s/4; })
        .attr("font-family","Verdana")
        .attr("font-size","9")          
        .attr("text-anchor","middle")
        .text(function(d){ return d.data.name; });      

    t.attr("x",function(d){ return d.x+d.s/2; })
        .attr("y",function(d){ return d.y+d.s/4; })
        .attr("font-family","Verdana")
        .attr("font-size","9")          
        .attr("text-anchor","middle")
        .text(function(d){ return d.data.name; });      

    t.exit().remove();

しかし、私が得るのは空の<g>要素のセットだけです。私は明らかに間違ったことをしていますか?

4

1 に答える 1

5

ネストされた選択は、マトリックスなどのある種のネストされたデータを前提としています。個々のデータ要素は配列ではないため、2 番目の呼び出し.data()は何もしません。詳細については、ネストされた選択に関するチュートリアルをご覧ください。

あなたのケースでネストされた選択が必要な理由は私にはわかりません。データ ポイントの名前を表示する要素を追加しているtextので、2 番目の (ネストされた) 選択は必要ありません。ただし、これを (少なくとも構文的に) 修正する最も簡単な方法は、 の各要素をdd単一要素の配列に変更することです。

于 2013-01-09T16:51:20.923 に答える