【问题标题】:jfreeChart regression line realtime Day axisjfreeChart 回归线实时日轴
【发布时间】:2023-04-06 03:26:01
【问题描述】:

我试图在每半秒出现的一些数据上绘制一条回归线。我目前正在实时绘制数据没问题。线程正在读取数据,并且主线程正在处理刷新图形。 数据是 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”对象并将其绘制在图表上的正确位置。 有没有人设法做到这一点?当我“直接绘制数据”时,即不尝试对其进行回归,它只是绘制精美的折线图。

【问题讨论】:

    标签: java date graph jfreechart


    【解决方案1】:

    我将时间序列图用于数据和回归线。所以这两个图表都是由ChartFactory.createTimeSeriesChart(...)创建的

    【讨论】:

    • 你不能扔给我一块稍微大一点的骨头吧?我试图在 timeSeriesCollection 中绘制 IS 的回归线的数据,因此是 timeSeries。因此,根据您的消息,听起来我应该在某种类型的图表上绘制它???我的图表是:JFreeChart chart = new JFreeChart(stockSymbol, null, mainPlot, false); ChartPanel chartPanel = new ChartPanel(chart); chartPanel.setPreferredSize(new Dimension(600, 300));谢谢
    • 创建时间序列图的简单方法是:ChartFactory.createTimeSeriesChart("", "", "", dataset, false, false, false); 其中dataset = new TimeSeriesCollection()。然后将主图形和回归线添加到数据集,如dataset.addSeries(timeSeries)。您需要填写您的 timeSeries(构造函数:new TimeSeries(title))。将TimeSeriesDataItem 添加到timeSeries。
    • 要建立回归线,使用公式创建新的时间序列和新点:y = a+bx 其中ab 是您的coefficients
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-02
    • 2012-08-26
    • 1970-01-01
    相关资源
    最近更新 更多