1

私はデータセットを持っています。各アイテムは D3 を使用して svg rects にリンクされています。

var bars = svg_content.selectAll("rect")
    .data(dataset);
    .enter()
    .append("rect")

生成が完了したと仮定します (つまり、.enter() プロセスが完了し、四角形が生成されました)。

そのデータセットの特定のインデックスに関連付けられた四角形 (たとえば、3 番目のデータにリンクされた四角形) にアクセスするにはどうすればよいでしょうか?

4

2 に答える 2

2

必要に応じて、selection.filterまたは一般的に使用されるselection.selectの関数形式を使用できます。

var third = selection.filter(function(d, i) { return i == 2; });

// Equivalently
var third = selection.select(function(d, i) { return i == 2; });
于 2013-02-08T23:07:59.280 に答える
1

これを行うにはいくつかの方法があります。通常、d3 では、選択範囲内からデータにアクセスする傾向があります。したがって、次のように表示されます。

var bars = svg_content.selectAll("rect")
    .data(dataset);
    .enter()
    .append("rect")
    .attr('class', function(d) { return d.myName; });

ここで d は、特定の四角形に関連付けられているデータセットのデータ項目です。そのコードは、各データ項目の「myName」プロパティを使用して各 rect を分類します。

これらの矩形の 1 つを特別に配置したいとしましょう。と 1 つmyName='aName'。その長方形を選択し、関連付けられたデータに基づいて「変換」属性を設定します。

svg.content.selectAll('rect.aName')
    .attr('transform', function(d) { return 'translate(' + d.x + ',' + d.y + 20 ')'; })

どちらの場合も、アイテムのインデックスにもアクセスでき、関連する場合は親インデックスにもアクセスできることに注意してください ( を使用function(d,i,j) {...})

最後に、一般的にはお勧めしませんが、単体テスト用に、要素に関連付けられたデータに .xml を使用して直接アクセスしました__data__。たとえば、jQuery の場合:

$.find("svg rect.aName")[0].__data__;

ここでクイックフィドルで遊ぶことができます

于 2013-02-08T23:38:13.630 に答える