1

d3.axis()を使用して、d3.select( "#axisTextIDValue")を使用して個別に参照したい軸ラベルと目盛りを作成していますが、の個々のテキスト要素のid属性を操作する方法がわかりません。軸。軸の目盛りまたはテキスト要素のID値を作成する方法を知っている人はいますか?

4

2 に答える 2

7

他の答えは目盛りを選択する方法を説明していますが、これらのような生成された要素に一意のIDを割り当てたい場合は、軸に呼び出したgにIDまたはクラスを指定して、サブ選択を使用して行うことができます。配列の位置に基づいて子テキスト要素のIDを設定します。

 d3.select("svg").append("g").attr("id", "axisG").call(axis);
 d3.select("#axisG").selectAll("text").attr("id", function(d,i) {return "axisText" + i});

 d3.select("#axisText0").node(); //demonstrates selectability

とはいえ、これはおそらくあまり良い考えではなく、D3によってオンザフライで生成されるティック/ラベル/ボロノイなどを処理するためのより良い方法がありますが、私はここに答えを出すことを確認したいと思いました誰かがこの種のことをする方法を探している場合に備えて。

于 2014-01-17T06:19:58.693 に答える
3

これのトリッキーな部分は、あなたが持っているティックや数を前もって知らないということです(あなたがあなたの軸でtickValuesプロパティを使用しない限り)。

一般に、軸を作成するグループを分類し、それをさらに選択するための基礎として使用できます。例えば

var axisGroup = parent.append('g')
                .attr('class', 'axis')

axisGroup.call(axis);

目盛りには「目盛り」クラスが割り当てられているので、すべての目盛りを選択できます。

axisGroup.selectAll('.tick');

またはすべてのテキストラベル:

axisGroup.selectAll('text');
于 2012-10-11T22:50:02.803 に答える