2012-05-01 12 views
1

私は過去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]); 
+1

あなたは 'console.log(x(/ *新しい値*/- TS + T))'で期待するものを得ますか?(2)あなたはあなたが期待するものを得ますか?新しいデータポイントを 'data'に追加した後に' console.log(/ * new value */- TS + T) 'と表示されますか? – ZachB

答えて

0

ここでは、ステップ・バイ・ステップのためのチュートリアルあなたのプロットを作成する方法のリンクです。

Part IPart II(私はあなたがそれを読んで推測)

私は新しいRECTが残っあなたは間違って与えている場合にのみ、「X」の位置に行くことができると思います。

こちらはreturn x(d.time - TS + T);です。 だから、どこかで問題があると思います。d.time & TSです。

同じTZでタイムスタンプを持っていることを確認していますか? 2時間の差はそのような効果を与えるでしょう。または、「新しいポイント」が最近ではないかもしれません。

関連する問題