JFreeChart - Gráfico de linhas

Um gráfico de linha ou gráfico de linha exibe informações como uma série de pontos de dados (marcadores) conectados por segmentos de linha reta. Gráfico de linhas mostra como os dados mudam com frequência de tempo igual.

Este capítulo demonstra como podemos usar JFreeChart para criar Line Chart de um determinado conjunto de dados de negócios.

Dados de Negócios

O exemplo a seguir desenha um gráfico de linha para mostrar uma tendência do número de escolas abertas em diferentes anos a partir de 1970.

Os dados fornecidos são os seguintes -

Ano Número de escolas
1970 15
1980 30
1990 60
2000 120
2013 240
2014 300

Aplicativo baseado em AWT

A seguir está o código para criar um gráfico de linha a partir das informações fornecidas acima. Este código ajuda você a incorporar um gráfico de linha em qualquer aplicativo baseado em 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 );
   }
}

Vamos manter o código Java acima em LineChart_AWT.java arquivo e, em seguida, compilar e executá-lo a partir do comando solicitado como -

$javac LineChart_AWT.java  
$java LineChart_AWT

Se tudo estiver bem, ele será compilado e executado para gerar o seguinte gráfico de linha -

Criação de imagem JPEG

Vamos reescrever o exemplo acima para gerar uma imagem JPEG a partir de uma linha 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);
   }
}

Vamos manter o código Java acima em LineChart.java arquivo e, em seguida, compilar e executá-lo a partir do comando solicitado como -

$javac LineChart.java  
$java LineChart

Se tudo estiver bem, ele irá compilar e executar para criar um arquivo de imagem JPEG chamado LineChart.jpeg em seu diretório atual.