Учебники

JFreeChart — Линейная диаграмма

Линейный график или линейный график отображают информацию в виде серии точек данных (маркеров), соединенных отрезками прямых линий. Линейная диаграмма показывает, как данные изменяются с одинаковой частотой.

В этой главе показано, как мы можем использовать JFreeChart для создания линейной диаграммы из заданного набора бизнес-данных.

Бизнес-данные

В следующем примере показана линейная диаграмма, показывающая тенденцию количества школ, открытых в разные годы, начиная с 1970 года.

Данные даны следующим образом —

Год Количество школ
1970 15
1980 30
1990 60
2000 120
2013 240
2014 300

Приложение на основе AWT

Ниже приведен код для создания линейной диаграммы из приведенной выше информации. Этот код помогает вам встроить линейную диаграмму в любое приложение на основе 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 );
   }
}

Давайте сохраним указанный выше Java-код в файле LineChart_AWT.java , а затем скомпилируем и запустим его из команды, отображаемой как —

$javac LineChart_AWT.java  
$java LineChart_AWT 

Если все в порядке, он скомпилируется и запустится, чтобы сгенерировать следующий линейный график —

Линейная диаграмма JFreeChart

Создание изображения JPEG

Давайте перепишем приведенный выше пример, чтобы сгенерировать изображение JPEG из командной строки.

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

Давайте сохраним приведенный выше Java-код в файле LineChart.java , а затем скомпилируем и запустим его из команды, отображаемой как —

$javac LineChart.java  
$java LineChart

Если все в порядке, он скомпилируется и выполнится для создания файла изображения JPEG с именем LineChart.jpeg в вашем текущем каталоге.