私は0.5秒ごとに来るいくつかのデータに回帰直線をプロットしようとしています. 現在、データをリアルタイムで問題なくプロットしています。データはスレッドによって読み取られており、メイン スレッドはグラフの更新を処理しています。データは、y 軸の値と x 軸の「日」(jfreeChart オブジェクト「日」) です。
データポイントの数が1より大きい場合に係数を計算するようにスレッドリスナーに設定しました。また、この条件でdataSetをmainPlotに追加します。これはスレッドリスナーにあります
if (++count > 1){
double[] coefficients = Regression.getOLSRegression(TimeSeriesCollection, 0);
mainPlot.setDataset(1, regressionData);
}
これは、グラフのセットアップの横にある、スレッド リスナーの外にあります。データ、通知は timeSeriesCollection からのものです。これは一種のプロットですが、すべてのデータを 1970 年に貼り付けています。つまり、残りのデータ (2012 年に発生) は右側にまとめられています。
Function2D curve = new LineFunction2D(coefficients[0], coefficients[1]);
XYDataset regressionData = DatasetUtilities.sampleFunction2D(curve,
2.0, 11.0, 100, "Fitted Regression Line");
XYLineAndShapeRenderer renderer2 = new XYLineAndShapeRenderer(true,
false);
renderer2.setSeriesPaint(0, Color.blue);
mainPlot.setRenderer(1, renderer2);
問題は、TimeSeries の x 軸データが「日」オブジェクトであることを理解し、グラフの正しい場所にプロットする方法です。誰かがこれを行うことができましたか?データを「まっすぐに、つまり回帰を行わずにプロットすると、美しくプロットされる折れ線グラフになります。