
// HistogramEx.java
// https://zetcode.com/java/jfreechart/
// Modified by Andrew Davison, ad@coe.psu.ac.th, Nov 2022

/* Generate NUM_VALS random number, and store them in a
   HistogramDataset consiting of NUM_BINS bins. 
   This is drawn as a Hostogram chart.

    Usage:
      > compile HistogramEx.java
      > run HistogramEx
*/

import javax.swing.*;

import org.jfree.chart.*;
import org.jfree.data.statistics.HistogramDataset;


public class HistogramEx extends JFrame
{
  private static final int NUM_VALS = 10000;
  private static final int NUM_BINS = 50;

  public HistogramEx()
  {
    super("Histogram Example");

    HistogramDataset ds = createDataset();

    JFreeChart chart = ChartFactory.createHistogram(
              NUM_VALS + " Randoms in " + NUM_BINS + " Bins", 
                                        "Bins", "Frequency", ds);

    ChartPanel cp = new ChartPanel(chart);
    setContentPane(cp);

    // pack();
    setSize(800, 500);
    setResizable(false);
    setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
    setLocationRelativeTo(null);
    setVisible(true);
  }  // HistogramEx()



  private HistogramDataset createDataset()
  {
    double[] vals = new double[NUM_VALS];
    for (int i = 0; i < NUM_VALS; i++)
      vals[i] = Math.random();

    HistogramDataset ds = new HistogramDataset();
    ds.addSeries("Values", vals, NUM_BINS);

    return ds;
  } /* createDataset */


  // -----------------------------------------

  public static void main(String[] args)
  {   new HistogramEx(); }

}  // HistogramEx class

