D3.jsを使用してアニメーションの棒グラフを作成しようとしています。この例のようにバーを1つずつ表示したい http://nvd3.com/ghpages/multiBar.html 。同様の動作を作成できましたが、モーションはバーの高さから始まり、バーはx軸に向かって構築されますが、モーションはx軸から始まり、例のようにバーの高さに移動します。 。
私のコードのはるかに簡略化されたバージョン: http://jsfiddle.net/gorkem/ECRMd/
どんな助けでも大歓迎です
座標系の原点は左上からのものであるため、「y」の値は各バーの上部に固定されています。 「y」の値を固定し、「高さ」を大きくすると、バーが小さくなっているように見えます。バーを下から成長させるには、「y」と「height」の両方を同時に遷移させる必要があります。
これはあなたが探しているものでなければなりません、私は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)。次に、遷移するときに、「高さ」(y(d.value))を増やし、「y」(h-y(d.value))を同じ割合で減らします。これバーの下部を軸に固定する効果があります。
お役に立てれば!
Xスケールが予想とは逆になっていることを覚えておいてください(バーは下から上に構築する必要があります(ここで、bottom = svgの高さ)。Transitionを使用してEnterでバーをアニメーション化します。
あなたが達成しようとしていることの例はここにあります: http://bl.ocks.org/jamesleesaunders/f32a8817f7724b17b7f1
ではごきげんよう、
ジム