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
       

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);

    }

}

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