
// TimeSeriesChartExample.java
// https://www.javatpoint.com/jfreechart-timeseries-chart
// Modified by Andrew Davison, ad@coe.psu.ac.th, Nov 2022

/* Two lines in a TimeSeries Chart, 
   with data points supplied in two TimeSeries.

   The graph background is a pale orange.

   Usage:
      > compile TimeSeriesChartExample.java
      > run TimeSeriesChartExample
*/

import java.awt.*;
import javax.swing.*;

import org.jfree.chart.*;
import org.jfree.chart.plot.*;

import org.jfree.data.time.*;
import org.jfree.data.xy.*;


public class TimeSeriesChartExample extends JFrame
{

  public TimeSeriesChartExample()
  {
    super("Time Series Chart");

    TimeSeriesCollection ds = createDataset();
    JFreeChart chart = ChartFactory.createTimeSeriesChart(
            "Time Series Chart Example", "Date", "Number", ds);

    XYPlot plot = (XYPlot)chart.getPlot();
    plot.setBackgroundPaint(new Color(255,228,196));

    ChartPanel panel = new ChartPanel(chart);
    setContentPane(panel);

    // pack();
    setSize(800, 400);
    setResizable(false);
    setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
    setLocationRelativeTo(null);
    setVisible(true);
  }  // TimeSeriesChartExample()


  private TimeSeriesCollection createDataset()
  // two series of points for two lines
  {
    TimeSeriesCollection ds = new TimeSeriesCollection();

    TimeSeries s1 = new TimeSeries("Series1");
    s1.add(new Day(1, 1, 2022), 50);
    s1.add(new Day(2, 1, 2022), 40);
    s1.add(new Day(3, 1, 2022), 45);
    s1.add(new Day(4, 1, 2022), 30);
    s1.add(new Day(5, 1, 2022), 50);
    s1.add(new Day(6, 1, 2022), 45);
    s1.add(new Day(7, 1, 2022), 60);
    s1.add(new Day(8, 1, 2022), 45);
    s1.add(new Day(9, 1, 2022), 55);
    s1.add(new Day(10, 1, 2022), 48);
    s1.add(new Day(11, 1, 2022), 60);
    s1.add(new Day(12, 1, 2022), 45);
    s1.add(new Day(13, 1, 2022), 65);
    s1.add(new Day(14, 1, 2022), 45);
    s1.add(new Day(15, 1, 2022), 55);
    ds.addSeries(s1);

    TimeSeries s2 = new TimeSeries("Series2");
    s2.add(new Day(1, 1, 2022), 40);
    s2.add(new Day(2, 1, 2022), 35);
    s2.add(new Day(3, 1, 2022), 26);
    s2.add(new Day(4, 1, 2022), 45);
    s2.add(new Day(5, 1, 2022), 40);
    s2.add(new Day(6, 1, 2022), 35);
    s2.add(new Day(7, 1, 2022), 45);
    s2.add(new Day(8, 1, 2022), 48);
    s2.add(new Day(9, 1, 2022), 31);
    s2.add(new Day(10, 1, 2022), 32);
    s2.add(new Day(11, 1, 2022), 21);
    s2.add(new Day(12, 1, 2022), 35);
    s2.add(new Day(13, 1, 2022), 10);
    s2.add(new Day(14, 1, 2022), 25);
    s2.add(new Day(15, 1, 2022), 15);
    ds.addSeries(s2);

    return ds;
  } /* createDataset */


  // --------------------------------------

  public static void main(String[] args)
  {   new TimeSeriesChartExample();  }


}  // end of TimeSeriesChartExample class
