私はエリアグラフを持っています(js fiddle https://jsfiddle.net/o7df3tyn/参照)このエリアグラフをアニメーションしたいと思います。私はthis 問題のアプローチを試してみましたが、このdoesntのは、私がD3エリアグラフアニメーション
var numberOfDays = 30;
var vis = d3.select('#visualisation'),
WIDTH = 1000,
HEIGHT = 400,
MARGINS = {
top: 20,
right: 20,
bottom: 20,
left: 50
};
var drawArea = function (data) {
var areaData = data;
// var areaData = data.data;
var xRange = d3.scale.linear().range([MARGINS.left, WIDTH - MARGINS.right]).domain([0, numberOfDays + 1]),
yRange = d3.scale.linear().range([HEIGHT - MARGINS.top, MARGINS.bottom]).domain([_.min(areaData), _.max(areaData)]);
var area = d3.svg.area()
.interpolate("monotone")
.x(function(d) {
return xRange(areaData.indexOf(d));
})
.y0(HEIGHT)
.y1(function(d) {
return yRange(d);
});
var path = vis.append("path")
.datum(areaData)
.attr("fill", 'lightgrey')
.attr("d", area);
};
var data = [1088,978,1282,755,908,1341,616,727,1281,247,1188,11204,556,15967,623,681,605,7267,4719,9665,5719,5907,3520,1286,1368,3243,2451,1674,1357,7414,2726]
drawArea(data);
は、だから私はカーテンのアプローチを使用するカント同じSVG要素でより多くの折れ線グラフを持っているので助けているようです。 下から領域をアニメーション化したいと思います。 アイデア/説明はありますか?
誰かが同じ問題を抱えている場合でも、@thatOneGuyは正確な問題を釘付けにしました。私の更新フィドルは、あなたが今、試してみることができ、ここでhttps://jsfiddle.net/sahils/o7df3tyn/14/
ありがとうございました。ちょっと興味があるんだけど。私は平凡な整数を表しています(実際には日数です)。したがって、xRange(index)はxRange(areaData.indexOf(d))と同じでなければなりません。私はevry反復で印刷しようとしました。 1 2 3 4 ..と同様に印刷されます。だから私はこれについて少し混乱している。この地域の機能がどのように働いているのか分かりません。私の理解によれば、それはxAxis上にプロットされる各値を表し、y関数内の小文字のdはY軸上の値を表します。 –
あなたのデータは整数の配列です。配列に到着するときにプロットしている瞬間です。だから0日目、1日目、2日目などです。ですから、これを行う最良の方法は、indexOfを使用しているものではなく、 'i'を使うことです。トゥイーンを実行するときに、エリア関数に値を渡し、現在の値をareaDataにチェックします。atmは0とデータ値の間にあり、決して見つけられません。これを解決するには、同じ出力を与える 'i'を使用してください。 – thatOneGuy
入手しました。どうもありがとう。 –