Debido a que el origen del sistema de coordenadas es desde la parte superior izquierda, el valor 'Y' está anclado en el arriba de cada barra. Si el valor 'y' es fijo y la 'altura' aumenta, parece que las barras crecen. Para hacer que las barras crezcan desde la parte inferior, deberá hacer la transición tanto de la "y" como de la "altura" al mismo tiempo.
Esto debería ser lo que está buscando, solo he cambiado dos líneas.
chart.selectAll("rect")
.data(data)
.enter().append("rect")
.attr("x", function(d, i) { return x(i) - .5; })
.attr("y", function(d) { return h - .5; }) //new----
.attr("width", w)
.transition().delay(function (d,i){ return i * 300;})
.duration(300)
.attr("height", function(d) { return y(d.value); })
.attr("y", function(d) { return h - y(d.value) - .5; }); //new-----
He comenzado el valor 'y' en la parte inferior del gráfico (h - 0.5). Luego, cuando haces la transición, aumentas la 'altura' (y (d.value)) y reduces la 'y' (h - y (d.value)) a la misma velocidad. Esto tiene el efecto de fijar la parte inferior de la barra al eje.
Espero que esto ayude!
muchas gracias, funcionó perfectamente –
que estaba teniendo problemas con algo ver y similar a esto hasta que también establezca la altura en 0 antes de la transición(). algo como: '.attr (" altura ", función (d) {return 0;})' – kendlete