2016-04-14 6 views
0

AndroiPlotを使用してリアルタイムの折れ線グラフをプロットしています。私はそれが最大ウィンドウに達すると左からプロットを再開する必要があります。私はx軸の値を0にリセットして、左からプロットを開始することができます。しかし、右から左に描かれているような線が常にあります。私はプロットに表示する必要はありません。誰かが正しい方法でそれをプロットするために私を助けてもらえますか?AndroidPlotは、画面の右隅に到達した後、左からプロットをプロットします。

private void addEntryGraph0() { 
    if (series0.size() > WINDOW_SIZE) { 
     for (int i = 0; i < sampleRatio; i++) 
      series0.removeFirst(); 
    } 
    // add the latest sample: 
    for (int i = 0; i < sampleRatio; i++) { 
     if(xVal1>WINDOW_SIZE){ 
      xVal1 =0; 
      series0.addLast(xVal1, ch0Buffer.get(i)); 
     } 
     else{ 
      xVal1++; 
      series0.addLast(xVal1, ch0Buffer.get(i)); 
     } 
    } 
    // redraw the Plots: 
    plot0.redraw(); 
    synchronized (ch0Buffer) { 
     ch0Buffer.subList(0, sampleRatio).clear(); 
    } 
} 

enter image description here

+0

私の推測では、プロットデータが適切に消去されていないということです。いくつかのロギングステートメントを追加するか、ブレークポイント付きのデバッガを使用して、グラフの左端に戻ったときにプロットデータが消去されていることを確認します。 – Karakuri

答えて

1

インデックスがオフになっているように見えます。これは任意の水平線ではなく、データセットの最後の可視点と最初の可視点の間の線です。最後の可視点は実際にiのデータに配置され、最初の可視点はi + 1です。 Androidplotはあなたのシリーズのすべてのポイントを単純に歩み、価値に基づいてそれらを描きます。

このコード:

if(xVal1>WINDOW_SIZE){ 
    xVal1 =0; 
    series0.addLast(xVal1, ch0Buffer.get(i)); 
} 

は、あなたが見ているものを説明するだろうXVALバックxの開始時にすべての方法を、持っているデータセットの最後に新しいポイントを追加します。

xvalを0にリセットする直前に、データセットにnull値を挿入するだけです。 Androidplotはその時点で行を終了し、別の非null値が見つかると新しい行を開始します。

しかし、達成しようとしていることを考えれば、プッシュ/ポッピングの代わりに循環バッファを使用することをお勧めします。より速く、よりシンプルになり、必要に応じて正確に動作します。

+0

ありがとうNick !!私は別の方法で実装しています... if(xVal1> WINDOW_SIZE){ series0.addLast(xVal1%WINDOW_SIZE、ch0Buffer.get(i)); }。どちらも同じ効果です.. – somia

関連する問題