過去 2 時間の時系列をプロットしようとしています。タイムスタンプと値を持つポイントの集まりです。例えば{time: 1234234553, value: 34}
新しいポイントが到着したら、リストの最後にプッシュしますdata
リスト内のすべてを再プロットします。
function redraw()
{
var TS = new Date().getTime(); // current time stamp
var T = (60*60*2*1000); // last two hours
chart.selectAll("rect")
.data(data)
.enter().append("rect")
.attr("x", function(d, i) { return x(d.time - TS + T); })
.attr("y", function(d) { return H - y(d.value); })
.attr("width", function(d) { return 2; })
.attr("height", function(d) { return y(d.value); });
}
しかし残念なことに、ポイントはプロットの右側ではなく左側に表示され、Firebug で SVG のソースを見ると、エントリに奇妙な x 値があります。
<rect x="function (){}" y="354.9553019925952" width="2" height="45.044698007404804"/>
誰でも助けることができますか?プロットされたデータをすべて削除して、再プロットする必要がありますか?
付録:
x() と y() を見る必要がある場合
var T = (60*60*2*1000); // 1 hurs
var x = d3.scale.linear()
.domain([0, T])
.range([0, W]);
var y = d3.scale.linear()
.domain([d3.min(data, function(d) { return d.value; }), 10])
.range([0, H]);