Мои данные выглядят так...
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, поэтому могу упустить что-то важное.