Thursday, December 30, 2010

Chart in Java

//Java
//jFree
//this 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