Можно ли использовать rangeBand()в порядковой шкале с динамическим доменом?

Мои данные выглядят так...

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

5
задан ZachB 3 May 2012 в 19:35
поделиться