1

過去 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]);
4

1 に答える 1

0

これは、プロットを作成するための段階的なチュートリアルへのリンクです。

Part I , Part II (読んだことあると思います)

間違った「x」位置を指定した場合にのみ、新しい四角形が左側に移動できると思います。

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

同じ TZ のタイムスタンプがあると確信していますか? 2時間の違いでこのような効果が得られます。または、「新しいポイント」が最近のものではない可能性があります。

于 2012-05-17T05:08:44.340 に答える