d3 переход гистограммы по оси Y вверх ногами

Я новичок в d3 и пытаюсь нарисовать анимированную гистограмму (следуя этому примеру). Мне удалось создать диаграмму, но проблема, с которой я столкнулся, заключается в том, что движение перевернуто (начало с высоты полосы строит полосу по направлению к оси X). Я хочу, чтобы движение начиналось с оси X и шло вверх!

это мой код

var y0 = d3.scale.linear().range([height, 0]);
var y1 = d3.scale.linear().range([height, 0]);
..
..

control.selectAll("rect")
       .data(function(d) { return d.category; })
       .enter().append("rect")
       .attr("width", x1.rangeBand())
       .attr("x", function(d) { return x1(d.name); })
       .attr("height", 0)
       .attr("y", function(d, i) { if(columnNum == 2 && i == 2) return y1(d.value); else return y0(d.value); })
       .on('mouseover', tip.show)
       .on('mouseout', tip.hide)
       .style("fill", function(d) { return color(d.name); });

control.selectAll("rect")
       .transition()
       .delay(function(d, i) { return i * 100; })
       .duration(1000)
       .attr("height", function(d, i) { if(columnNum == 2 && i == 2) return y1(d.value); else return y0(d.value); })
       .attr("y", function(d, i) { if(columnNum == 2 && i == 2) return height - y1(d.value); else return height - y0(d.value); });

columnNum — это просто индикатор количества столбцов в группе.

Спасибо за помощь.


person Anonymous    schedule 25.03.2014    source источник


Ответы (1)


Инициализируйте y положением оси x (т.е. height) для этого:

control.selectAll("rect")
   .data(function(d) { return d.category; })
   .enter().append("rect")
   .attr("height", 0)
   .attr("y", height);
person Lars Kotthoff    schedule 25.03.2014