私のデータは次のようになります...
var data = [{name:'a', value : 97},
{name:'b', value : 24},
{name:'c', value : 10}];
このように作成された序数スケールがあります...
var y = d3.scale.ordinal().rangeBands([0, 30 * data.length]);
そして私はそれを使ってこのような基本的なグラフを作成しています...
chart.selectAll("rect")
.data(data)
.enter().append("svg:rect")
.attr("y", function(d,i){ return y(d.name);})
.attr("width", function(d,i){ return x(d.value);})
.attr("height", y.rangeBand());
d3のドキュメント(ここ)によると、順序尺度のドメインを指定する必要はなく、使用しようとすると入力されます。ただし、私の状況では、ドメイン配列がスケールオブジェクト内に入力されているように見えても、y(d.name)は常に0を返し、y.rangeBand()は例外を発生させます。
だから、私は自分のドメインを事前に定義することでこれを回避しました...
.domain(data.map(function (d){ return d.name;}))
ただし、このドメインに動的に追加できるようにしたいと思います。追加した場合、作成時に設定された元の値を超えて拡張されることはありません。これも可能ですか?
私はd3に非常に慣れていないので、ここで重要な何かを見逃している可能性があります。