Pages

Thursday, December 30, 2010

Chart in Java

//Java
This example code creates chart with the hlep of jFree chart Library to work with this example you will need jFree chart Library that is available on jFree.org


-Watch video
https://youtu.be/sX0XAROhuiQ
       

import java.awt.Color;

import org.jfree.chart.ChartFactory;

import org.jfree.chart.ChartPanel;

import org.jfree.chart.JFreeChart;

import org.jfree.chart.axis.NumberAxis;

import org.jfree.chart.plot.PlotOrientation;

import org.jfree.chart.plot.XYPlot;

import org.jfree.chart.renderer.xy.XYLineAndShapeRenderer;

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 Main extends ApplicationFrame {



    public Main(final String title) {



        super(title);

        final XYDataset dataset = createDataset();

        final JFreeChart chart = createChart(dataset);

        final ChartPanel chartPanel = new ChartPanel(chart);

        chartPanel.setPreferredSize(new java.awt.Dimension(700, 470));

        setContentPane(chartPanel);

    }



    private XYDataset createDataset() {



       //series no. 1 data elements

        final XYSeries series1 = new XYSeries("First");       

        series1.add(1.0, 1.0);

        series1.add(2.0, 4.0);

        series1.add(3.0, 3.0);

        series1.add(4.0, 5.0);

        series1.add(5.0, 5.0);

        series1.add(6.0, 7.0);

        series1.add(7.0, 7.0);

        series1.add(8.0, 8.0);

      // Series no. 2 data elements

      final XYSeries series2 = new XYSeries("Second");

        series2.add(1.0, 5.0);

        series2.add(2.0, 7.0);

        series2.add(3.0, 6.0);

        series2.add(4.0, 8.0);

        series2.add(5.0, 4.0);

        series2.add(6.0, 4.0);

        series2.add(7.0, 2.0);

        series2.add(8.0, 1.0);

         // Series no. 3 data elements

        final XYSeries series3 = new XYSeries("Third");

        series3.add(3.0, 7.0);

        series3.add(4.0, 4.0);

        series3.add(5.0, 1.0);

        series3.add(6.0, 3.0);

        series3.add(7.0, 6.0);

        series3.add(8.0, 3.0);

        series3.add(9.0, 6.0);

        series3.add(10.0, 4.0);

          // Series no. 4 data elements 

        final XYSeries series4 = new XYSeries("Third");

        series4.add(1.0, 2.0);

        series4.add(2.0, 7.0);

        series4.add(3.0, 8.0);

        series4.add(4.0, 4.0);

        series4.add(7.0, 5.0);

        series4.add(8.0, 2.0);

        series4.add(9.0, 6.0);

        series4.add(10.0, 3.0);

        final XYSeriesCollection dataset = new XYSeriesCollection();

        dataset.addSeries(series1);// add series to dataset

        dataset.addSeries(series2);

        dataset.addSeries(series3);

        dataset.addSeries(series4);               

        return dataset;       

    }

   // createChart() returns chart 

    private JFreeChart createChart(final XYDataset dataset) {

        final JFreeChart chart = ChartFactory.createXYLineChart(

            "Line Chart",     

            "X",                     

            "Y",                     

            dataset,                 

            PlotOrientation.VERTICAL,

            true,                   

            true,                   

            false                   

        ); 

        chart.setBackgroundPaint(Color.white);

        final XYPlot plot = chart.getXYPlot();

        plot.setBackgroundPaint(Color.lightGray);

        plot.setDomainGridlinePaint(Color.white);

        plot.setRangeGridlinePaint(Color.white);       

        final XYLineAndShapeRenderer renderer = new XYLineAndShapeRenderer();

        renderer.setSeriesLinesVisible(0, false);

        renderer.setSeriesShapesVisible(1, false);

        plot.setRenderer(renderer); 

        final NumberAxis rangeAxis = (NumberAxis) plot.getRangeAxis();

        rangeAxis.setStandardTickUnits(NumberAxis.createIntegerTickUnits());                   

        return chart;       

    }

 // main method

    public static void main(final String[] args) {

        final Main chart = new Main("Line Chart");

        chart.pack();

        RefineryUtilities.centerFrameOnScreen(chart);

        chart.setVisible(true);

    }

}
Watch video

3 comments:

  1. if u get any problem then u can post ur comments here.
    thanks.

    ReplyDelete
  2. hello sir, i need a line chart in java With Time, On X axis-Time and On Y-Axis-Numeric Value, Both the axis value will be retrieve from database , sir please help me , i am facing problem in it.. if possibel plz make it dyanamic..
    Thank You..

    ReplyDelete
  3. hello Adish, i have another blog which is doing what u want. but its in JSP. i think u can have a fair idea of the functioning from this example. if u still face any problem then let me know i will try to explain you.

    http://jspimageupload.blogspot.in/

    ReplyDelete