0

我试图在每半秒出现的一些数据上绘制一条回归线。我目前正在实时绘制数据没问题。线程正在读取数据,并且主线程正在处理刷新图形。数据是 y 轴上的值和 x 轴上的“Day”(jfreeChart 对象“Day”)。

如果数据点的数量大于 1,我已经在线程侦听器中设置它来计算系数,然后在这种情况下将 dataSet 添加到 mainPlot。所以这是在线程监听器中

if (++count > 1){
        double[] coefficients = Regression.getOLSRegression(TimeSeriesCollection, 0);
        mainPlot.setDataset(1, regressionData);
}

这是在线程侦听器之外,在图的设置旁边。数据,通知来自 timeSeriesCollection。It 确实有点情节,但将所有数据都保留在 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 轴数据是“Day”对象并将其绘制在图表上的正确位置。有没有人设法做到这一点?当我“直接绘制数据”时,即不尝试对其进行回归,它只是绘制精美的折线图。

4

1 回答 1

0

我将 TimeSeries Chart 用于数据和回归线。所以这两个图表都是由ChartFactory.createTimeSeriesChart(...)

于 2012-10-08T22:40:36.657 回答