私はSVGとして棒グラフを作成していますが、棒をアニメーション化して、y軸の「0」から対応する値まで上向きに成長させたいと考えています。
私を苦労させているのは、座標(0,0)が左下ではなく左上にあることです。私の「アニメーション化されていない」ソリューションでは、次のように、バーの高さに応じて「y」の値をバーに与えていました。
<svg id="graph"
xmlns="http://www.w3.org/2000/svg"
xlink="http://www.w3.org/1999/xlink">
<linearGradient x1="0%" x2="0%" y1="10%" y2="100%" id="gradient">
<stop style="stop-color:#0000FF" offset="0"></stop>
<stop style="stop-color:#FFFFFF" offset="1"></stop>
</linearGradient>
<rect width="50" height="14" x="0" y="8" fill="url(#gradient)"></rect>
<rect width="50" height="22" x="55" y="0" fill="url(#gradient)"></rect>
<rect width="50" height="15" x="110" y="7" fill="url(#gradient)"></rect>
<rect width="50" height="9" x="165" y="13" fill="url(#gradient)"></rect>
</svg>
(y +高さ)はすべての長方形で同じであるため、これは棒グラフのように見えますが、概念的には、y軸のさまざまなポイントから始まり、同じyの値まで下に向かって「上から下」に描画されます。
これをアニメートしたいときは、明らかに「上向き」に成長させたいのですが、これが行き詰まっています。
<rect width="50" height="14" x="0" y="8" fill="url(#gradient)">
<animate attributeName="height" from="0" to="14" dur="2s" id="animation"></animate>
</rect>
これにより、長方形がy=8からy=22に「下」に成長し、(0,0)が左上にあるグリッド内で完全に意味があります。ただし、実際には反対のことをしたかったのですが、「height」属性の負の値は0として扱われるように見えるため(または、高さを-14から0にアニメーション化できた可能性があります)、どうすればよいかわかりません。
私はグーグルを試しましたが、あまり運がありませんでした。また、チャートライブラリを使用せずにこれを実行したいと思います。