継続的に受信するリアルタイム (動的) データとチャートへのフィードがある状況をシミュレートしたい
したがって、データ配列を 1 秒ごとに継続的に更新する必要がある一方で、d3 を使用してアニメーション化された折れ線グラフのデモを試みます。
そして、これが私の変更されたhtmlソースです:私のソースコード
buffer[100]
関数をrandom number for every 1 second
呼び出してにデータを入力しようとしましたstartGenerator()
function startGenerator()
{
//signalGenerator();
setInterval("signalGenerator()", 1000); //
}
function signalGenerator()
{
var buffer = new Array(100);
var i;
for (i = 0; i < buffer.length; i++)
{
buffer[i] = Math.random() * 10;
}
FeedDataToChart("#graph1", 300, 300, "basis", true, 100, 100, buffer, 0);
}
以下はFeedDataToChart()
パラメータ名です。
function FeedDataToChart(id, width, height, interpolation, animate, updateDelay, transitionDelay, data, startIndex)
counter
新しいデータを再描画するたびに、再描画データ インデックスを確認するためにcounter
aを使用し1
ます。まで、counter < data.length-1
はre-draw timer
停止し、 から新しいデータを取得する必要がありますbuffer[100]
。
function stopTimer()
{
clearInterval(myTimer);
alert("The redraw timer stop here, get new data from buffer");
}
function startTimer()
{
if (myTimer == null)
{
myTimer = setInterval(function() {
if (counter < data.length - 1)
{
var v = data.shift(); // remove the first element of the array
data.push(v); // add a new element to the array (we're just taking the number we just shifted off the front and appending to the end)
if(animate)
{
redrawWithAnimation();
}
else
{
redrawWithoutAnimation();
}
counter++;
}
else
{
alert("no more data in buffer");
stopTimer();
counter = startIndex;
}
}, updateDelay);
}
}
関数を繰り返そうとしたときに問題が発生startGenerator()
し、結果は次のように表示
されます。
私はjavascriptにかなり慣れていません。Every からデータを取得し、単一の折れ線グラフを継続的に更新する方法を特定できる人はbuffer
いますか?1 second
ありがとうございました!
編集ソースを更新すると、問題は最小限に抑えられました: My New Source
.remove()
に行を追加してstopTimer()
、sgv に保持されたデータを削除し、リセットしてglobal buffer to null
、関数を再度呼び出して、startGenerator()
タイマーが停止したときに新しいデータを取得します。
今私が抱えている唯一の問題は、新しいグラフが作成されるたびに、前のものの下に新しいsgvパスが作成されることです。新しいグラフは、作成されるたびに下に移動しています。今日更新した新しいソースを確認してください。コードを実行すると、私の説明が表示されます。
sgv パスを更新するたびに同じ場所に固定するにはどうすればよいですか?