D3.js トランジション 質問する

D3.js トランジション 質問する

d3.jsを使用してアニメーション棒グラフを作成しようとしています。この例のように棒を1本ずつ表示したいです。http://nvd3.com/ghpages/multiBar.html同様の動作を作成することはできましたが、モーションはバーの高さから始まり、バーを x 軸に向かって構築します。ただし、例のように、モーションは x 軸から始まり、バーの高さまで進むようにしたいです。

私のコードのかなり簡略化されたバージョン:http://jsfiddle.net/gorkem/ECRMd/

ご協力いただければ幸いです

ベストアンサー1

座標系の原点は左上からなので、「y」の値は各バーの上部に固定されます。「y」の値が固定され、「高さ」が増加すると、バーが下に向かって伸びるように見えます。バーを下から伸ばすには、「y」と「高さ」の両方を同時に遷移させる必要があります。

これがあなたが探しているものであるはずです。変更したのは 2 行だけです。

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-----

'y' の値はグラフの下部 (h - 0.5) から開始しました。次に、遷移時に 'height' (y(d.value)) を増やし、同じ割合で 'y' (h - y(d.value)) を減らします。これにより、バーの下部が軸に固定されます。

お役に立てれば!

おすすめ記事