org.jfree.chart.demo.RegressionDemo1.java Source code

Java tutorial

Introduction

Here is the source code for org.jfree.chart.demo.RegressionDemo1.java

Source

package org.jfree.chart.demo;

import java.awt.BorderLayout;
import java.awt.Color;

import javax.swing.JPanel;
import javax.swing.JTabbedPane;

import org.jfree.chart.ChartPanel;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.axis.NumberAxis;
import org.jfree.chart.plot.XYPlot;
import org.jfree.chart.renderer.xy.XYLineAndShapeRenderer;
import org.jfree.data.function.LineFunction2D;
import org.jfree.data.function.PowerFunction2D;
import org.jfree.data.general.DatasetUtilities;
import org.jfree.data.statistics.Regression;
import org.jfree.data.xy.XYDataset;
import org.jfree.data.xy.XYSeries;
import org.jfree.data.xy.XYSeriesCollection;
import org.jfree.ui.ApplicationFrame;
import org.jfree.ui.RefineryUtilities;

public class RegressionDemo1 extends ApplicationFrame {
    private static final long serialVersionUID = 1L;

    static class DemoPanel extends JPanel {

        private static final long serialVersionUID = 1L;

        private XYDataset createSampleData1() {
            XYSeries xyseries = new XYSeries("Series 1");
            xyseries.add(2D, 56.270000000000003D);
            xyseries.add(3D, 41.32D);
            xyseries.add(4D, 31.449999999999999D);
            xyseries.add(5D, 30.050000000000001D);
            xyseries.add(6D, 24.690000000000001D);
            xyseries.add(7D, 19.780000000000001D);
            xyseries.add(8D, 20.940000000000001D);
            xyseries.add(9D, 16.73D);
            xyseries.add(10D, 14.210000000000001D);
            xyseries.add(11D, 12.44D);
            XYSeriesCollection xyseriescollection = new XYSeriesCollection(xyseries);
            return xyseriescollection;
        }

        private JTabbedPane createContent() {
            JTabbedPane jtabbedpane = new JTabbedPane();
            jtabbedpane.add("Linear", createChartPanel1());
            jtabbedpane.add("Power", createChartPanel2());
            return jtabbedpane;
        }

        private ChartPanel createChartPanel1() {
            NumberAxis numberaxis = new NumberAxis("X");
            numberaxis.setAutoRangeIncludesZero(false);
            NumberAxis numberaxis1 = new NumberAxis("Y");
            numberaxis1.setAutoRangeIncludesZero(false);
            XYLineAndShapeRenderer xylineandshaperenderer = new XYLineAndShapeRenderer(false, true);
            XYPlot xyplot = new XYPlot(data1, numberaxis, numberaxis1, xylineandshaperenderer);
            double ad[] = Regression.getOLSRegression(data1, 0);
            LineFunction2D linefunction2d = new LineFunction2D(ad[0], ad[1]);
            XYDataset xydataset = DatasetUtilities.sampleFunction2D(linefunction2d, 2D, 11D, 100,
                    "Fitted Regression Line");
            xyplot.setDataset(1, xydataset);
            XYLineAndShapeRenderer xylineandshaperenderer1 = new XYLineAndShapeRenderer(true, false);
            xylineandshaperenderer1.setSeriesPaint(0, Color.blue);
            xyplot.setRenderer(1, xylineandshaperenderer1);
            JFreeChart jfreechart = new JFreeChart("Linear Regression", JFreeChart.DEFAULT_TITLE_FONT, xyplot,
                    true);
            ChartPanel chartpanel = new ChartPanel(jfreechart, false);
            return chartpanel;
        }

        private ChartPanel createChartPanel2() {
            NumberAxis numberaxis = new NumberAxis("X");
            numberaxis.setAutoRangeIncludesZero(false);
            NumberAxis numberaxis1 = new NumberAxis("Y");
            numberaxis1.setAutoRangeIncludesZero(false);
            XYLineAndShapeRenderer xylineandshaperenderer = new XYLineAndShapeRenderer(false, true);
            XYPlot xyplot = new XYPlot(data1, numberaxis, numberaxis1, xylineandshaperenderer);
            double ad[] = Regression.getPowerRegression(data1, 0);
            PowerFunction2D powerfunction2d = new PowerFunction2D(ad[0], ad[1]);
            XYDataset xydataset = DatasetUtilities.sampleFunction2D(powerfunction2d, 2D, 11D, 100,
                    "Fitted Regression Line");
            XYLineAndShapeRenderer xylineandshaperenderer1 = new XYLineAndShapeRenderer(true, false);
            xylineandshaperenderer1.setSeriesPaint(0, Color.blue);
            xyplot.setDataset(1, xydataset);
            xyplot.setRenderer(1, xylineandshaperenderer1);
            JFreeChart jfreechart = new JFreeChart("Power Regression", JFreeChart.DEFAULT_TITLE_FONT, xyplot, true);
            ChartPanel chartpanel = new ChartPanel(jfreechart, false);
            return chartpanel;
        }

        private XYDataset data1;

        public DemoPanel() {
            super(new BorderLayout());
            data1 = createSampleData1();
            add(createContent());
        }
    }

    public RegressionDemo1(String s) {
        super(s);
        JPanel jpanel = createDemoPanel();
        getContentPane().add(jpanel);
    }

    public static JPanel createDemoPanel() {
        return new DemoPanel();
    }

    public static void main(String args[]) {
        RegressionDemo1 regressiondemo1 = new RegressionDemo1("Regression Demo 1");
        regressiondemo1.pack();
        RefineryUtilities.centerFrameOnScreen(regressiondemo1);
        regressiondemo1.setVisible(true);
    }
}