私は過去2時間の時系列をプロットしようとしています。タイムスタンプと値を持つ点だけをプロットしようとしています。例えば{time: 1234234553, value: 34}
ライブタイムをD3.jsでプロットするときの奇妙なx値
新しい点は、私はリスト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); });
}
しかしunforunatelyポイントではなく、プロットの左側に表示されますSVGのFirebugのソースを見ると、エントリには奇妙なx値があります。
<rect x="function(){}" y="354.9553019925952" width="2" height="45.044698007404804"/>
誰でも可能ですエル・P?プロットされたすべてのデータを削除して再プロットする必要がありますか?
付録:
場合、あなたは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]);
あなたは 'console.log(x(/ *新しい値*/- TS + T))'で期待するものを得ますか?(2)あなたはあなたが期待するものを得ますか?新しいデータポイントを 'data'に追加した後に' console.log(/ * new value */- TS + T) 'と表示されますか? – ZachB