
// LineChartEx.java
// https://www.javatpoint.com/jfreechart-line-chart
// Modified by Andrew Davison, ad@coe.psu.ac.th, Nov 2022

/* Two lines drawn on a single line chart graph. The
   values for each line are stored in a categories 
   displayed along the x-axis (called column keys). 
   Each line is identified by a row key.

    Usage:
      > compile LineChartEx.java
      > run LineChartEx
*/

import java.awt.*;
import javax.swing.*;

import org.jfree.chart.*;
import org.jfree.data.category.*;



public class LineChartEx extends JFrame
{

  public LineChartEx()
  {
    super("Line Chart Example");

    CategoryDataset ds = createDataset();

    JFreeChart chart = ChartFactory.createLineChart(
             "Site Traffic",  "Date",  "Number of Visitor", ds);

    ChartPanel cp = new ChartPanel(chart);
    setContentPane(cp);

    // pack();
    setSize(800, 400);
    setResizable(false);
    setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
    setLocationRelativeTo(null);
    setVisible(true);
  }  // end of LineChartEx()


  private CategoryDataset createDataset()
  // data for two lines (series)
  {
    String s1 = "Visitor";
    String s2 = "Unique Visitor";

    DefaultCategoryDataset ds = new DefaultCategoryDataset();

    ds.addValue(200, s1, "2022-12-19");  
       // value; row (line) key; column (category) key
    ds.addValue(150, s1, "2022-12-20");
    ds.addValue(100, s1, "2022-12-21");
    ds.addValue(210, s1, "2022-12-22");
    ds.addValue(240, s1, "2022-12-23");
    ds.addValue(195, s1, "2022-12-24");
    ds.addValue(245, s1, "2022-12-25");

    ds.addValue(150, s2, "2022-12-19");
    ds.addValue(130, s2, "2022-12-20");
    ds.addValue(95, s2, "2022-12-21");
    ds.addValue(195, s2, "2022-12-22");
    ds.addValue(200, s2, "2022-12-23");
    ds.addValue(180, s2, "2022-12-24");
    ds.addValue(230, s2, "2022-12-25");

    return ds;
  } /* createDataset */


  // ---------------------------------------------

  public static void main(String[] args)
  {   new LineChartEx();  } 


}  // end of LineChartEx class
