package utility.examples;

import java.util.Random;

import org.knowm.xchart.SwingWrapper;
import org.knowm.xchart.XYChart;
import org.knowm.xchart.XYChartBuilder;
import org.knowm.xchart.XYSeries;
import org.knowm.xchart.XYSeries.XYSeriesRenderStyle;
import org.knowm.xchart.style.Styler.LegendPosition;
import org.knowm.xchart.style.markers.SeriesMarkers;

public class Example2 {

	private static Random random;
	

	public static void main(String[] args) {
		
	    random = new Random();

		// Create Chart
		XYChart chart = new XYChartBuilder().width(600).height(500).title("Gaussian Blobs").xAxisTitle("X").yAxisTitle("Y").build();

		// Customize Chart
		chart.getStyler().setDefaultSeriesRenderStyle(XYSeriesRenderStyle.Scatter);
		chart.getStyler().setChartTitleVisible(false);
		chart.getStyler().setLegendPosition(LegendPosition.InsideSW);
		chart.getStyler().setMarkerSize(16);

		// Series
		chart.addSeries("Gaussian Blob 1", getGaussian(1000, 1, 10), getGaussian(1000, 1, 10));
		XYSeries series = chart.addSeries("Gaussian Blob 2", getGaussian(1000, 1, 10), getGaussian(1000, 0, 5));
		series.setMarker(SeriesMarkers.DIAMOND);

		new SwingWrapper<XYChart>(chart).displayChart();
	}//end main
	
	private static double[] getGaussian(int numberOfPoints, int pMean, int pVariance) {
		double [] result = new double[numberOfPoints];
		for (int i =0; i<numberOfPoints; i++) {
			result[i] = pMean + random.nextGaussian() * pVariance;
		}
		return result;
	}

}
