JFreeChart - Gráfico de líneas

Un gráfico de líneas o un gráfico de líneas muestra información como una serie de puntos de datos (marcadores) conectados por segmentos de línea recta. El gráfico de líneas muestra cómo cambian los datos con la misma frecuencia de tiempo.

Este capítulo demuestra cómo podemos usar JFreeChart para crear Line Chart a partir de un conjunto determinado de datos empresariales.

Datos comerciales

El siguiente ejemplo dibuja un gráfico de líneas para mostrar una tendencia del número de escuelas abiertas en diferentes años a partir de 1970.

Los datos dados son los siguientes:

Año Número DE escuelas
1970 15
1980 30
1990 60
2000 120
2013 240
2014 300

Aplicación basada en AWT

A continuación se muestra el código para crear un gráfico de líneas a partir de la información proporcionada anteriormente. Este código le ayuda a incrustar un gráfico de líneas en cualquier aplicación basada en AWT.

import org.jfree.chart.ChartPanel;
import org.jfree.chart.ChartFactory;
import org.jfree.chart.JFreeChart;
import org.jfree.ui.ApplicationFrame;
import org.jfree.ui.RefineryUtilities;
import org.jfree.chart.plot.PlotOrientation;
import org.jfree.data.category.DefaultCategoryDataset;

public class LineChart_AWT extends ApplicationFrame {

   public LineChart_AWT( String applicationTitle , String chartTitle ) {
      super(applicationTitle);
      JFreeChart lineChart = ChartFactory.createLineChart(
         chartTitle,
         "Years","Number of Schools",
         createDataset(),
         PlotOrientation.VERTICAL,
         true,true,false);
         
      ChartPanel chartPanel = new ChartPanel( lineChart );
      chartPanel.setPreferredSize( new java.awt.Dimension( 560 , 367 ) );
      setContentPane( chartPanel );
   }

   private DefaultCategoryDataset createDataset( ) {
      DefaultCategoryDataset dataset = new DefaultCategoryDataset( );
      dataset.addValue( 15 , "schools" , "1970" );
      dataset.addValue( 30 , "schools" , "1980" );
      dataset.addValue( 60 , "schools" ,  "1990" );
      dataset.addValue( 120 , "schools" , "2000" );
      dataset.addValue( 240 , "schools" , "2010" );
      dataset.addValue( 300 , "schools" , "2014" );
      return dataset;
   }
   
   public static void main( String[ ] args ) {
      LineChart_AWT chart = new LineChart_AWT(
         "School Vs Years" ,
         "Numer of Schools vs years");

      chart.pack( );
      RefineryUtilities.centerFrameOnScreen( chart );
      chart.setVisible( true );
   }
}

Mantengamos el código Java anterior en LineChart_AWT.java archivo, y luego compílelo y ejecútelo desde el comando solicitado como -

$javac LineChart_AWT.java  
$java LineChart_AWT

Si todo está bien, se compilará y ejecutará para generar el siguiente gráfico de líneas:

Creación de imágenes JPEG

Reescribamos el ejemplo anterior para generar una imagen JPEG desde una línea de comando.

import java.io.*;

import org.jfree.chart.JFreeChart; 
import org.jfree.chart.ChartFactory; 
import org.jfree.chart.ChartUtilities; 
import org.jfree.chart.plot.PlotOrientation;
import org.jfree.data.category.DefaultCategoryDataset;

public class LineChart {

   public static void main( String[ ] args ) throws Exception {
      DefaultCategoryDataset line_chart_dataset = new DefaultCategoryDataset();
      line_chart_dataset.addValue( 15 , "schools" , "1970" );
      line_chart_dataset.addValue( 30 , "schools" , "1980" );
      line_chart_dataset.addValue( 60 , "schools" , "1990" );
      line_chart_dataset.addValue( 120 , "schools" , "2000" );
      line_chart_dataset.addValue( 240 , "schools" , "2010" ); 
      line_chart_dataset.addValue( 300 , "schools" , "2014" );

      JFreeChart lineChartObject = ChartFactory.createLineChart(
         "Schools Vs Years","Year",
         "Schools Count",
         line_chart_dataset,PlotOrientation.VERTICAL,
         true,true,false);

      int width = 640;    /* Width of the image */
      int height = 480;   /* Height of the image */ 
      File lineChart = new File( "LineChart.jpeg" ); 
      ChartUtilities.saveChartAsJPEG(lineChart ,lineChartObject, width ,height);
   }
}

Mantengamos el código Java anterior en LineChart.java archivo, y luego compílelo y ejecútelo desde el comando solicitado como -

$javac LineChart.java  
$java LineChart

Si todo está bien, se compilará y ejecutará para crear un archivo de imagen JPEG llamado LineChart.jpeg en su directorio actual.