[ MPAndroidChart の Github にも投稿]
ローリング ウィンドウを使用したリアルタイム グラフが必要ですが、そのときに「問題」に遭遇しました。データの追加は問題ありませんが、グラフの現在の幅よりも大きい Xvalue(index) を持つデータを追加した後、[X] Xvalues を常に表示できるとは限らないため、グラフは自動スクロールしません。
問題の例: グラフ3の結果は、リアルタイム データの表示に必要なものではありません。スクロールウィンドウははるかに便利です。だから私はこれをアーカイブしようとしました..
私の作業の「解決策」は、最初の Xvalue を削除し、新しい Xvalue を追加して、画面 1 のすべてのエントリのすべての Xindex を左に移動することでした。結果は次のようなコードです。
int GRAPH_WIDTH = 10;
LineData lineData = chart.getData();
LineDataSet lineDataSet = lineData.getDataSetByIndex(0);
int count = lineDataSet.getEntryCount();
// Make rolling window
if (lineData.getXValCount() <= count) {
// Remove/Add XVal
lineData.getXVals().add("" + count);
lineData.getXVals().remove(0);
// Move all entries 1 to the left..
for (int i=0; i < count; i++) {
Entry e = lineDataSet.getEntryForXIndex(i);
if (e==null) continue;
e.setXIndex(e.getXIndex() - 1);
}
// Set correct index to add value
count = GRAPH_WIDTH;
}
// Add new value
lineData.addEntry(new Entry([random value], count), 0);
// Make sure to draw
chart.notifyDataSetChanged();
chart.invalidate();
これは実際には非常にうまく機能しますが (こちらのビデオで見られるように)、もっと簡単な方法が必要だと思います。APIウィンドウ/スクロールを見落としているかもしれません..しかし、これがこの結果をアーカイブする「正しい」方法である場合、ライブラリにこの種のグラフのサポートを追加することは拡張になります。